Perbaikan Service Satu sehat

This commit is contained in:
meninjar
2026-04-14 05:01:09 +00:00
parent 4e59b96c99
commit 0adf9ef073
38 changed files with 7 additions and 2438 deletions
@@ -1,484 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v3.12.4
// source: internal/infrastructure/transport/grpc/proto/permission/v1/permission.proto
package permissionV1
import (
reflect "reflect"
sync "sync"
unsafe "unsafe"
wrappers "github.com/golang/protobuf/ptypes/wrappers"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Pesan request untuk RPC GetRolePermissionTree.
type GetRolePermissionTreeRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
RoleKeycloak string `protobuf:"bytes,1,opt,name=role_keycloak,json=roleKeycloak,proto3" json:"role_keycloak,omitempty"`
GroupKeycloak []string `protobuf:"bytes,2,rep,name=group_keycloak,json=groupKeycloak,proto3" json:"group_keycloak,omitempty"`
// Menggunakan wrapper BoolValue untuk membedakan antara 'false' dan 'tidak diset'.
ActiveOnly *wrappers.BoolValue `protobuf:"bytes,3,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetRolePermissionTreeRequest) Reset() {
*x = GetRolePermissionTreeRequest{}
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetRolePermissionTreeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetRolePermissionTreeRequest) ProtoMessage() {}
func (x *GetRolePermissionTreeRequest) ProtoReflect() protoreflect.Message {
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetRolePermissionTreeRequest.ProtoReflect.Descriptor instead.
func (*GetRolePermissionTreeRequest) Descriptor() ([]byte, []int) {
return file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescGZIP(), []int{0}
}
func (x *GetRolePermissionTreeRequest) GetRoleKeycloak() string {
if x != nil {
return x.RoleKeycloak
}
return ""
}
func (x *GetRolePermissionTreeRequest) GetGroupKeycloak() []string {
if x != nil {
return x.GroupKeycloak
}
return nil
}
func (x *GetRolePermissionTreeRequest) GetActiveOnly() *wrappers.BoolValue {
if x != nil {
return x.ActiveOnly
}
return nil
}
// Pesan response untuk RPC GetRolePermissionTree.
type RolePermissionTreeResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
Data *RolePermissionData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RolePermissionTreeResponse) Reset() {
*x = RolePermissionTreeResponse{}
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RolePermissionTreeResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RolePermissionTreeResponse) ProtoMessage() {}
func (x *RolePermissionTreeResponse) ProtoReflect() protoreflect.Message {
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RolePermissionTreeResponse.ProtoReflect.Descriptor instead.
func (*RolePermissionTreeResponse) Descriptor() ([]byte, []int) {
return file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescGZIP(), []int{1}
}
func (x *RolePermissionTreeResponse) GetSuccess() bool {
if x != nil {
return x.Success
}
return false
}
func (x *RolePermissionTreeResponse) GetData() *RolePermissionData {
if x != nil {
return x.Data
}
return nil
}
type RolePermissionData struct {
state protoimpl.MessageState `protogen:"open.v1"`
Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"`
Group []string `protobuf:"bytes,2,rep,name=group,proto3" json:"group,omitempty"`
Access []*AccessTreeItem `protobuf:"bytes,3,rep,name=access,proto3" json:"access,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RolePermissionData) Reset() {
*x = RolePermissionData{}
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RolePermissionData) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RolePermissionData) ProtoMessage() {}
func (x *RolePermissionData) ProtoReflect() protoreflect.Message {
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RolePermissionData.ProtoReflect.Descriptor instead.
func (*RolePermissionData) Descriptor() ([]byte, []int) {
return file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescGZIP(), []int{2}
}
func (x *RolePermissionData) GetRole() string {
if x != nil {
return x.Role
}
return ""
}
func (x *RolePermissionData) GetGroup() []string {
if x != nil {
return x.Group
}
return nil
}
func (x *RolePermissionData) GetAccess() []*AccessTreeItem {
if x != nil {
return x.Access
}
return nil
}
type AccessTreeItem struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Icon string `protobuf:"bytes,3,opt,name=icon,proto3" json:"icon,omitempty"`
Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level,omitempty"`
Sort int32 `protobuf:"varint,6,opt,name=sort,proto3" json:"sort,omitempty"`
Active bool `protobuf:"varint,7,opt,name=active,proto3" json:"active,omitempty"`
Permission *Permission `protobuf:"bytes,8,opt,name=permission,proto3,oneof" json:"permission,omitempty"`
Children []*AccessTreeItem `protobuf:"bytes,9,rep,name=children,proto3" json:"children,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AccessTreeItem) Reset() {
*x = AccessTreeItem{}
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AccessTreeItem) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AccessTreeItem) ProtoMessage() {}
func (x *AccessTreeItem) ProtoReflect() protoreflect.Message {
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AccessTreeItem.ProtoReflect.Descriptor instead.
func (*AccessTreeItem) Descriptor() ([]byte, []int) {
return file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescGZIP(), []int{3}
}
func (x *AccessTreeItem) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *AccessTreeItem) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *AccessTreeItem) GetIcon() string {
if x != nil {
return x.Icon
}
return ""
}
func (x *AccessTreeItem) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *AccessTreeItem) GetLevel() int32 {
if x != nil {
return x.Level
}
return 0
}
func (x *AccessTreeItem) GetSort() int32 {
if x != nil {
return x.Sort
}
return 0
}
func (x *AccessTreeItem) GetActive() bool {
if x != nil {
return x.Active
}
return false
}
func (x *AccessTreeItem) GetPermission() *Permission {
if x != nil {
return x.Permission
}
return nil
}
func (x *AccessTreeItem) GetChildren() []*AccessTreeItem {
if x != nil {
return x.Children
}
return nil
}
type Permission struct {
state protoimpl.MessageState `protogen:"open.v1"`
Create bool `protobuf:"varint,1,opt,name=create,proto3" json:"create,omitempty"`
Read bool `protobuf:"varint,2,opt,name=read,proto3" json:"read,omitempty"`
Update bool `protobuf:"varint,3,opt,name=update,proto3" json:"update,omitempty"`
Delete bool `protobuf:"varint,4,opt,name=delete,proto3" json:"delete,omitempty"`
Disable bool `protobuf:"varint,5,opt,name=disable,proto3" json:"disable,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Permission) Reset() {
*x = Permission{}
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Permission) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Permission) ProtoMessage() {}
func (x *Permission) ProtoReflect() protoreflect.Message {
mi := &file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Permission.ProtoReflect.Descriptor instead.
func (*Permission) Descriptor() ([]byte, []int) {
return file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescGZIP(), []int{4}
}
func (x *Permission) GetCreate() bool {
if x != nil {
return x.Create
}
return false
}
func (x *Permission) GetRead() bool {
if x != nil {
return x.Read
}
return false
}
func (x *Permission) GetUpdate() bool {
if x != nil {
return x.Update
}
return false
}
func (x *Permission) GetDelete() bool {
if x != nil {
return x.Delete
}
return false
}
func (x *Permission) GetDisable() bool {
if x != nil {
return x.Disable
}
return false
}
var File_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto protoreflect.FileDescriptor
const file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDesc = "" +
"\n" +
"Kinternal/infrastructure/transport/grpc/proto/permission/v1/permission.proto\x12\rpermission.v1\x1a\x1egoogle/protobuf/wrappers.proto\"\xa7\x01\n" +
"\x1cGetRolePermissionTreeRequest\x12#\n" +
"\rrole_keycloak\x18\x01 \x01(\tR\froleKeycloak\x12%\n" +
"\x0egroup_keycloak\x18\x02 \x03(\tR\rgroupKeycloak\x12;\n" +
"\vactive_only\x18\x03 \x01(\v2\x1a.google.protobuf.BoolValueR\n" +
"activeOnly\"m\n" +
"\x1aRolePermissionTreeResponse\x12\x18\n" +
"\asuccess\x18\x01 \x01(\bR\asuccess\x125\n" +
"\x04data\x18\x02 \x01(\v2!.permission.v1.RolePermissionDataR\x04data\"u\n" +
"\x12RolePermissionData\x12\x12\n" +
"\x04role\x18\x01 \x01(\tR\x04role\x12\x14\n" +
"\x05group\x18\x02 \x03(\tR\x05group\x125\n" +
"\x06access\x18\x03 \x03(\v2\x1d.permission.v1.AccessTreeItemR\x06access\"\xa6\x02\n" +
"\x0eAccessTreeItem\x12\x0e\n" +
"\x02id\x18\x01 \x01(\x03R\x02id\x12\x12\n" +
"\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" +
"\x04icon\x18\x03 \x01(\tR\x04icon\x12\x10\n" +
"\x03url\x18\x04 \x01(\tR\x03url\x12\x14\n" +
"\x05level\x18\x05 \x01(\x05R\x05level\x12\x12\n" +
"\x04sort\x18\x06 \x01(\x05R\x04sort\x12\x16\n" +
"\x06active\x18\a \x01(\bR\x06active\x12>\n" +
"\n" +
"permission\x18\b \x01(\v2\x19.permission.v1.PermissionH\x00R\n" +
"permission\x88\x01\x01\x129\n" +
"\bchildren\x18\t \x03(\v2\x1d.permission.v1.AccessTreeItemR\bchildrenB\r\n" +
"\v_permission\"\x82\x01\n" +
"\n" +
"Permission\x12\x16\n" +
"\x06create\x18\x01 \x01(\bR\x06create\x12\x12\n" +
"\x04read\x18\x02 \x01(\bR\x04read\x12\x16\n" +
"\x06update\x18\x03 \x01(\bR\x06update\x12\x16\n" +
"\x06delete\x18\x04 \x01(\bR\x06delete\x12\x18\n" +
"\adisable\x18\x05 \x01(\bR\adisable2\x87\x01\n" +
"\x14RolPermissionService\x12o\n" +
"\x15GetRolePermissionTree\x12+.permission.v1.GetRolePermissionTreeRequest\x1a).permission.v1.RolePermissionTreeResponseBGZEinternal/infrastructure/transport/grpc/gen/permission/v1;permissionV1b\x06proto3"
var (
file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescOnce sync.Once
file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescData []byte
)
func file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescGZIP() []byte {
file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescOnce.Do(func() {
file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDesc), len(file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDesc)))
})
return file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDescData
}
var file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_goTypes = []any{
(*GetRolePermissionTreeRequest)(nil), // 0: permission.v1.GetRolePermissionTreeRequest
(*RolePermissionTreeResponse)(nil), // 1: permission.v1.RolePermissionTreeResponse
(*RolePermissionData)(nil), // 2: permission.v1.RolePermissionData
(*AccessTreeItem)(nil), // 3: permission.v1.AccessTreeItem
(*Permission)(nil), // 4: permission.v1.Permission
(*wrappers.BoolValue)(nil), // 5: google.protobuf.BoolValue
}
var file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_depIdxs = []int32{
5, // 0: permission.v1.GetRolePermissionTreeRequest.active_only:type_name -> google.protobuf.BoolValue
2, // 1: permission.v1.RolePermissionTreeResponse.data:type_name -> permission.v1.RolePermissionData
3, // 2: permission.v1.RolePermissionData.access:type_name -> permission.v1.AccessTreeItem
4, // 3: permission.v1.AccessTreeItem.permission:type_name -> permission.v1.Permission
3, // 4: permission.v1.AccessTreeItem.children:type_name -> permission.v1.AccessTreeItem
0, // 5: permission.v1.RolPermissionService.GetRolePermissionTree:input_type -> permission.v1.GetRolePermissionTreeRequest
1, // 6: permission.v1.RolPermissionService.GetRolePermissionTree:output_type -> permission.v1.RolePermissionTreeResponse
6, // [6:7] is the sub-list for method output_type
5, // [5:6] is the sub-list for method input_type
5, // [5:5] is the sub-list for extension type_name
5, // [5:5] is the sub-list for extension extendee
0, // [0:5] is the sub-list for field type_name
}
func init() { file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_init() }
func file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_init() {
if File_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto != nil {
return
}
file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes[3].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDesc), len(file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_rawDesc)),
NumEnums: 0,
NumMessages: 5,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_goTypes,
DependencyIndexes: file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_depIdxs,
MessageInfos: file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_msgTypes,
}.Build()
File_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto = out.File
file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_goTypes = nil
file_internal_infrastructure_transport_grpc_proto_permission_v1_permission_proto_depIdxs = nil
}
@@ -1,128 +0,0 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.6.0
// - protoc v3.12.4
// source: internal/infrastructure/transport/grpc/proto/permission/v1/permission.proto
package permissionV1
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9
const (
RolPermissionService_GetRolePermissionTree_FullMethodName = "/permission.v1.RolPermissionService/GetRolePermissionTree"
)
// RolPermissionServiceClient is the client API for RolPermissionService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
//
// Definisi service.
type RolPermissionServiceClient interface {
// Mengambil permission tree untuk role dan/atau group tertentu.
GetRolePermissionTree(ctx context.Context, in *GetRolePermissionTreeRequest, opts ...grpc.CallOption) (*RolePermissionTreeResponse, error)
}
type rolPermissionServiceClient struct {
cc grpc.ClientConnInterface
}
func NewRolPermissionServiceClient(cc grpc.ClientConnInterface) RolPermissionServiceClient {
return &rolPermissionServiceClient{cc}
}
func (c *rolPermissionServiceClient) GetRolePermissionTree(ctx context.Context, in *GetRolePermissionTreeRequest, opts ...grpc.CallOption) (*RolePermissionTreeResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(RolePermissionTreeResponse)
err := c.cc.Invoke(ctx, RolPermissionService_GetRolePermissionTree_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
// RolPermissionServiceServer is the server API for RolPermissionService service.
// All implementations must embed UnimplementedRolPermissionServiceServer
// for forward compatibility.
//
// Definisi service.
type RolPermissionServiceServer interface {
// Mengambil permission tree untuk role dan/atau group tertentu.
GetRolePermissionTree(context.Context, *GetRolePermissionTreeRequest) (*RolePermissionTreeResponse, error)
mustEmbedUnimplementedRolPermissionServiceServer()
}
// UnimplementedRolPermissionServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedRolPermissionServiceServer struct{}
func (UnimplementedRolPermissionServiceServer) GetRolePermissionTree(context.Context, *GetRolePermissionTreeRequest) (*RolePermissionTreeResponse, error) {
return nil, status.Error(codes.Unimplemented, "method GetRolePermissionTree not implemented")
}
func (UnimplementedRolPermissionServiceServer) mustEmbedUnimplementedRolPermissionServiceServer() {}
func (UnimplementedRolPermissionServiceServer) testEmbeddedByValue() {}
// UnsafeRolPermissionServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to RolPermissionServiceServer will
// result in compilation errors.
type UnsafeRolPermissionServiceServer interface {
mustEmbedUnimplementedRolPermissionServiceServer()
}
func RegisterRolPermissionServiceServer(s grpc.ServiceRegistrar, srv RolPermissionServiceServer) {
// If the following call panics, it indicates UnimplementedRolPermissionServiceServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&RolPermissionService_ServiceDesc, srv)
}
func _RolPermissionService_GetRolePermissionTree_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetRolePermissionTreeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RolPermissionServiceServer).GetRolePermissionTree(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: RolPermissionService_GetRolePermissionTree_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RolPermissionServiceServer).GetRolePermissionTree(ctx, req.(*GetRolePermissionTreeRequest))
}
return interceptor(ctx, in, info, handler)
}
// RolPermissionService_ServiceDesc is the grpc.ServiceDesc for RolPermissionService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var RolPermissionService_ServiceDesc = grpc.ServiceDesc{
ServiceName: "permission.v1.RolPermissionService",
HandlerType: (*RolPermissionServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GetRolePermissionTree",
Handler: _RolPermissionService_GetRolePermissionTree_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "internal/infrastructure/transport/grpc/proto/permission/v1/permission.proto",
}
@@ -1,50 +0,0 @@
package handlers
import (
"context"
"service/internal/infrastructure/transport/grpc/mappers"
"service/internal/master/role/permission"
// Asumsi path ke proto-generated file
permissionV1 "service/internal/infrastructure/transport/grpc/gen/permission/v1"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
// PermissionHandler mengimplementasikan gRPC service untuk role permission.
type PermissionHandler struct {
permissionV1.UnimplementedRolPermissionServiceServer
service permission.Service
}
// NewPermissionHandler membuat instance baru dari PermissionHandler.
func NewPermissionHandler(service permission.Service) *PermissionHandler {
return &PermissionHandler{
service: service,
}
}
// GetRolePermissionTree adalah implementasi dari RPC.
func (h *PermissionHandler) GetRolePermissionTree(ctx context.Context, req *permissionV1.GetRolePermissionTreeRequest) (*permissionV1.RolePermissionTreeResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "request cannot be nil")
}
// Konversi wrapper BoolValue ke pointer *bool yang diharapkan oleh service
var activeOnly *bool
if val := req.GetActiveOnly(); val != nil {
b := val.GetValue()
activeOnly = &b
}
tree, err := h.service.GetRolePermissionTree(ctx, req.GetRoleKeycloak(), req.GetGroupKeycloak(), activeOnly)
if err != nil {
return nil, handleServiceError(err)
}
// Menggunakan mapper untuk mengubah hasil dari service ke format proto
protoResponse := mappers.MapRolePermissionTreeToProto(tree)
return protoResponse, nil
}
@@ -1,18 +0,0 @@
package mappers
import "fmt"
func convertToString(value interface{}) string {
if value == nil {
return ""
}
switch v := value.(type) {
case string:
return v
case int, int64, float64:
return fmt.Sprintf("%v", v)
default:
return fmt.Sprintf("%v", v)
}
}
@@ -1,55 +0,0 @@
package mappers
import (
permissionV1 "service/internal/infrastructure/transport/grpc/gen/permission/v1"
"service/internal/master/role/permission"
)
// mapAccessTreeToProto secara rekursif mengubah tree dari service ke format proto.
func mapAccessTreeToProto(serviceAccess []*permission.AccessTreeItem) []*permissionV1.AccessTreeItem {
if serviceAccess == nil {
return nil
}
protoAccess := make([]*permissionV1.AccessTreeItem, len(serviceAccess))
for i, item := range serviceAccess {
protoItem := &permissionV1.AccessTreeItem{
Id: item.ID,
Name: item.Name,
Icon: item.Icon,
Url: item.URL,
Level: int32(item.Level),
Sort: int32(item.Sort),
Active: item.Active,
Children: mapAccessTreeToProto(item.Children), // Panggilan rekursif
}
if item.Permission != nil {
protoItem.Permission = &permissionV1.Permission{
Create: item.Permission.Create,
Read: item.Permission.Read,
Update: item.Permission.Update,
Delete: item.Permission.Delete,
Disable: item.Permission.Disable,
}
}
protoAccess[i] = protoItem
}
return protoAccess
}
// MapRolePermissionTreeToProto adalah fungsi utama untuk mengubah seluruh respons tree.
func MapRolePermissionTreeToProto(serviceResponse *permission.RolePermissionTreeResponse) *permissionV1.RolePermissionTreeResponse {
if serviceResponse == nil {
return nil
}
return &permissionV1.RolePermissionTreeResponse{
Success: serviceResponse.Success,
Data: &permissionV1.RolePermissionData{
Role: serviceResponse.Data.Role,
// Group: serviceResponse.Data.Group,
Access: mapAccessTreeToProto(serviceResponse.Data.Access),
},
}
}
@@ -1,83 +0,0 @@
syntax = "proto3";
package master.v1;
// Path should be relative to the module root.
// The package name is specified after the semicolon.
option go_package = "internal/infrastructure/transport/grpc/gen/master/role/master/v1;masterV1";
import "google/protobuf/wrappers.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
// Service definition for RoleAccessRolMaster.
service RoleAccessRolMasterService {
// Get a single RoleAccessRolMaster by its ID.
rpc GetRoleAccessRolMaster(GetRoleAccessRolMasterRequest) returns (RoleAccessRolMasterResponse);
// Get a list of RoleAccessRolMasters with pagination and filtering.
rpc ListRoleAccessRolMasters(ListRoleAccessRolMastersRequest) returns (ListRoleAccessRolMastersResponse);
// Create a new RoleAccessRolMaster.
rpc CreateRoleAccessRolMaster(CreateRoleAccessRolMasterRequest) returns (RoleAccessRolMasterResponse);
// Update an existing RoleAccessRolMaster.
rpc UpdateRoleAccessRolMaster(UpdateRoleAccessRolMasterRequest) returns (RoleAccessRolMasterResponse);
// Delete a RoleAccessRolMaster by its ID.
rpc DeleteRoleAccessRolMaster(DeleteRoleAccessRolMasterRequest) returns (google.protobuf.Empty);
}
// The main message representing a RoleAccessRolMaster.
message RoleAccessRolMaster {
string id = 1;
optional string name = 2;
optional bool active = 3;
optional google.protobuf.Timestamp created_at = 4;
optional google.protobuf.Timestamp updated_at = 5;
optional string s_e_l_e_c_t = 6;
}
// --- Request/Response Messages ---
message GetRoleAccessRolMasterRequest {
int64 id = 1;
}
message RoleAccessRolMasterResponse {
RoleAccessRolMaster data = 1;
}
message ListRoleAccessRolMastersRequest {
int32 page = 1;
int32 page_size = 2;
// Add filter fields here if needed
}
message ListRoleAccessRolMastersResponse {
repeated RoleAccessRolMaster data = 1;
int64 total_items = 2;
}
message CreateRoleAccessRolMasterRequest {
string id = 1;
string name = 2;
bool active = 3;
google.protobuf.Timestamp created_at = 4;
google.protobuf.Timestamp updated_at = 5;
string s_e_l_e_c_t = 6;
}
message UpdateRoleAccessRolMasterRequest {
int64 id = 1;
optional string id = 2;
optional string name = 3;
optional bool active = 4;
optional google.protobuf.Timestamp created_at = 5;
optional google.protobuf.Timestamp updated_at = 6;
optional string s_e_l_e_c_t = 7;
}
message DeleteRoleAccessRolMasterRequest {
int64 id = 1;
}
@@ -1,56 +0,0 @@
syntax = "proto3";
package permission.v1;
// Opsi go_package ini sangat penting.
// Path harus relatif terhadap root modul (tanpa nama modul "service-general").
// Nama paket eksplisit (permissionV1) ditambahkan setelah titik koma.
option go_package = "internal/infrastructure/transport/grpc/gen/permission/v1;permissionV1";
import "google/protobuf/wrappers.proto";
// Definisi service.
service RolPermissionService {
// Mengambil permission tree untuk role dan/atau group tertentu.
rpc GetRolePermissionTree(GetRolePermissionTreeRequest) returns (RolePermissionTreeResponse);
}
// Pesan request untuk RPC GetRolePermissionTree.
message GetRolePermissionTreeRequest {
string role_keycloak = 1;
repeated string group_keycloak = 2;
// Menggunakan wrapper BoolValue untuk membedakan antara 'false' dan 'tidak diset'.
google.protobuf.BoolValue active_only = 3;
}
// Pesan response untuk RPC GetRolePermissionTree.
message RolePermissionTreeResponse {
bool success = 1;
RolePermissionData data = 2;
}
message RolePermissionData {
string role = 1;
repeated string group = 2;
repeated AccessTreeItem access = 3;
}
message AccessTreeItem {
int64 id = 1;
string name = 2;
string icon = 3;
string url = 4;
int32 level = 5;
int32 sort = 6;
bool active = 7;
optional Permission permission = 8;
repeated AccessTreeItem children = 9;
}
message Permission {
bool create = 1;
bool read = 2;
bool update = 3;
bool delete = 4;
bool disable = 5;
}
@@ -1,64 +0,0 @@
syntax = "proto3";
package auth;
// PERBAIKAN: Tambahkan 'transport' dan hapus suffix '/auth' agar sesuai direktori import
option go_package = "gen/auth/v1;auth";
message LoginRequest {
string username = 1;
string password = 2;
}
message LoginResponse {
string token = 1;
string expires_at = 2;
User user = 3;
}
message RegisterRequest {
string username = 1;
string email = 2;
string password = 3;
string full_name = 4;
string role = 5;
}
message RegisterResponse {
string id = 1;
string username = 2;
string email = 3;
string full_name = 4;
}
message ValidateTokenRequest {
string token = 1;
}
message ValidateTokenResponse {
bool valid = 1;
User user = 2;
}
message LogoutRequest {
string token = 1;
}
message LogoutResponse {
bool success = 1;
}
message User {
string id = 1;
string username = 2;
string email = 3;
string full_name = 4;
string role = 5;
}
service AuthService {
rpc Register (RegisterRequest) returns (RegisterResponse);
rpc Login(LoginRequest) returns (LoginResponse);
rpc ValidateToken (ValidateTokenRequest) returns (ValidateTokenResponse);
rpc Logout (LogoutRequest) returns (LogoutResponse);
}
@@ -4,18 +4,15 @@ import (
"fmt"
"net"
"service/internal/infrastructure/config"
"service/internal/infrastructure/transport/grpc/handlers"
"service/pkg/logger"
// Import generated proto files. Asumsi path ini benar.
permissionV1 "service/internal/infrastructure/transport/grpc/gen/permission/v1"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
type ServiceRegistry struct {
PermissionHandler *handlers.PermissionHandler
// PermissionHandler *handlers.PermissionHandler
}
// GRPCServer membungkus instance grpc.Server.
@@ -30,10 +27,10 @@ func NewGRPCServer(config *config.ServerGRPCConfig, registry *ServiceRegistry) *
srv := grpc.NewServer()
// Daftarkan semua service yang ada di registry
if registry.PermissionHandler != nil {
permissionV1.RegisterRolPermissionServiceServer(srv, registry.PermissionHandler)
logger.Default().Info("Registered RolPermission gRPC service")
}
// if registry.PermissionHandler != nil {
// permissionV1.RegisterRolPermissionServiceServer(srv, registry.PermissionHandler)
// logger.Default().Info("Registered RolPermission gRPC service")
// }
// Aktifkan reflection agar bisa di-debug dengan tools seperti grpcurl
reflection.Register(srv)
@@ -1,38 +0,0 @@
package antrol
import (
"net/http"
antrolService "service/internal/bpjs/antrol/reference"
"service/pkg/errors"
"service/pkg/response"
"github.com/gin-gonic/gin"
)
type AntrolHandler struct {
service antrolService.Service
}
func NewAntrolHandler(service antrolService.Service) *AntrolHandler {
return &AntrolHandler{service: service}
}
func (h *AntrolHandler) RegisterRoutes(router *gin.RouterGroup) {
group := router.Group("/bpjs/antrol/reference")
{
group.GET("/poli", h.GetRefPoli)
}
}
func (h *AntrolHandler) GetRefPoli(c *gin.Context) {
ctx := c.Request.Context()
res, err := h.service.GetRefPoli(ctx)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Antrol Poli reference", res)
}
@@ -1,100 +0,0 @@
package aplicare
import (
"net/http"
"strconv"
bedService "service/internal/bpjs/aplicare/bed"
"service/pkg/errors"
"service/pkg/response"
"github.com/gin-gonic/gin"
)
type BedHandler struct {
service bedService.Service
}
func NewBedHandler(service bedService.Service) *BedHandler {
return &BedHandler{service: service}
}
func (h *BedHandler) RegisterRoutes(router *gin.RouterGroup) {
group := router.Group("/bpjs/aplicare/bed")
{
group.GET("/:kdppk/:start/:limit", h.GetBedList)
group.POST("/:kdppk", h.CreateBed)
group.PUT("/:kdppk", h.UpdateBed)
group.DELETE("/:kdppk", h.DeleteBed)
}
}
func (h *BedHandler) GetBedList(c *gin.Context) {
kdPpk := c.Param("kdppk")
start, _ := strconv.Atoi(c.Param("start"))
limit, _ := strconv.Atoi(c.Param("limit"))
ctx := c.Request.Context()
res, err := h.service.GetBedList(ctx, kdPpk, start, limit)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Aplicares bed list", res)
}
func (h *BedHandler) CreateBed(c *gin.Context) {
kdPpk := c.Param("kdppk")
var req bedService.BedData
if err := c.ShouldBindJSON(&req); err != nil {
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
return
}
ctx := c.Request.Context()
if err := h.service.CreateBed(ctx, kdPpk, req); err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusCreated, "Successfully created BPJS Aplicares bed data", nil)
}
func (h *BedHandler) UpdateBed(c *gin.Context) {
kdPpk := c.Param("kdppk")
var req bedService.BedData
if err := c.ShouldBindJSON(&req); err != nil {
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
return
}
ctx := c.Request.Context()
if err := h.service.UpdateBed(ctx, kdPpk, req); err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully updated BPJS Aplicares bed data", nil)
}
func (h *BedHandler) DeleteBed(c *gin.Context) {
kdPpk := c.Param("kdppk")
var req bedService.BedDeletePayload
if err := c.ShouldBindJSON(&req); err != nil {
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
return
}
ctx := c.Request.Context()
if err := h.service.DeleteBed(ctx, kdPpk, req); err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully deleted BPJS Aplicares bed data", nil)
}
@@ -1,53 +0,0 @@
package apotek
import (
"net/http"
dphoService "service/internal/bpjs/apotek/reference/dpho"
poliService "service/internal/bpjs/apotek/reference/poli"
"service/pkg/errors"
"service/pkg/response"
"github.com/gin-gonic/gin"
)
type ReferenceHandler struct {
dphoService dphoService.Service
poliService poliService.Service
}
func NewReferenceHandler(dpho dphoService.Service, poli poliService.Service) *ReferenceHandler {
return &ReferenceHandler{
dphoService: dpho,
poliService: poli,
}
}
func (h *ReferenceHandler) RegisterRoutes(router *gin.RouterGroup) {
group := router.Group("/bpjs/apotek/reference")
{
group.GET("/dpho", h.GetDPHO)
group.GET("/poli/:param", h.GetPoli)
}
}
func (h *ReferenceHandler) GetDPHO(c *gin.Context) {
res, err := h.dphoService.GetDPHO(c.Request.Context())
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Apotek DPHO reference", res)
}
func (h *ReferenceHandler) GetPoli(c *gin.Context) {
param := c.Param("param")
res, err := h.poliService.GetPoli(c.Request.Context(), param)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully retrieved BPJS Apotek Poli reference", res)
}
@@ -1,64 +0,0 @@
package vclaim
import (
"net/http"
"time"
pesertaService "service/internal/bpjs/vclaim/peserta"
"service/pkg/errors"
"service/pkg/response"
"github.com/gin-gonic/gin"
)
type PesertaHandler struct {
service pesertaService.Service
}
func NewPesertaHandler(service pesertaService.Service) *PesertaHandler {
return &PesertaHandler{service: service}
}
func (h *PesertaHandler) RegisterRoutes(router *gin.RouterGroup) {
group := router.Group("/bpjs/vclaim/peserta")
{
group.GET("/nik/:nik", h.GetPesertaByNIK)
group.GET("/nokartu/:nokartu", h.GetPesertaByNoKartu)
}
}
func (h *PesertaHandler) GetPesertaByNIK(c *gin.Context) {
nik := c.Param("nik")
tglSEP := c.Query("tgl_sep")
if tglSEP == "" {
tglSEP = time.Now().Format("2006-01-02")
}
ctx := c.Request.Context()
res, err := h.service.GetPesertaByNIK(ctx, nik, tglSEP)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully retrieved participant data by NIK", res)
}
func (h *PesertaHandler) GetPesertaByNoKartu(c *gin.Context) {
noKartu := c.Param("nokartu")
tglSEP := c.Query("tgl_sep")
if tglSEP == "" {
tglSEP = time.Now().Format("2006-01-02")
}
ctx := c.Request.Context()
res, err := h.service.GetPesertaByNoKartu(ctx, noKartu, tglSEP)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), appErr.Metadata())
return
}
response.Success(c, http.StatusOK, "Successfully retrieved participant data by card number", res)
}
@@ -1,105 +0,0 @@
package vclaim
import (
"net/http"
sepService "service/internal/bpjs/vclaim/sep"
"service/pkg/errors"
"service/pkg/response"
"github.com/gin-gonic/gin"
)
// SepHandler menangani semua request HTTP terkait VClaim.
type SepHandler struct {
sepService sepService.Service
}
// NewSepHandler membuat instance SepHandler baru.
func NewSepHandler(sepService sepService.Service) *SepHandler {
return &SepHandler{
sepService: sepService,
}
}
// RegisterRoutes mendaftarkan semua rute untuk BPJS VClaim.
func (h *SepHandler) RegisterRoutes(router *gin.RouterGroup) {
bpjsGroup := router.Group("/bpjs/vclaim")
{
sepGroup := bpjsGroup.Group("/sep")
{
sepGroup.POST("", h.CreateSEP)
sepGroup.PUT("", h.UpdateSEP)
// BPJS API untuk delete menggunakan method POST, tapi kita ekspos sebagai DELETE untuk konsistensi RESTful.
sepGroup.DELETE("", h.DeleteSEP)
sepGroup.GET("/:nosep", h.GetSEPDetail)
}
}
}
// CreateSEP menangani request untuk membuat SEP baru.
func (h *SepHandler) CreateSEP(c *gin.Context) {
var req sepService.CreateSEPRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
return
}
result, err := h.sepService.Create(c.Request.Context(), req)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
return
}
response.Success(c, http.StatusCreated, "Successfully created SEP", result)
}
// UpdateSEP menangani request untuk memperbarui SEP.
func (h *SepHandler) UpdateSEP(c *gin.Context) {
var req sepService.UpdateSEPRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.Error(c, http.StatusBadRequest, "Invalid request body", err.Error())
return
}
result, err := h.sepService.Update(c.Request.Context(), req)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
return
}
response.Success(c, http.StatusOK, "Successfully updated SEP", result)
}
// GetSEPDetail menangani request untuk mendapatkan detail SEP.
func (h *SepHandler) GetSEPDetail(c *gin.Context) {
noSEP := c.Param("no_sep")
result, err := h.sepService.GetDetail(c.Request.Context(), noSEP)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
return
}
response.Success(c, http.StatusOK, "Successfully retrieved SEP detail", result)
}
// DeleteSEP menangani request untuk menghapus SEP.
func (h *SepHandler) DeleteSEP(c *gin.Context) {
var req sepService.DeleteSEPRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.Error(c, http.StatusBadRequest, "Invalid request body for SEP deletion", err.Error())
return
}
result, err := h.sepService.Delete(c.Request.Context(), req)
if err != nil {
appErr := errors.FromError(err)
response.Error(c, appErr.HTTPStatus(), appErr.Error(), nil)
return
}
response.Success(c, http.StatusOK, "Successfully deleted SEP", result)
}
@@ -8,10 +8,6 @@ import (
"service/internal/infrastructure/config"
"service/internal/infrastructure/transport/http/middleware"
antrolHttp "service/internal/infrastructure/transport/http/handlers/bpjs/antrol"
aplicareHttp "service/internal/infrastructure/transport/http/handlers/bpjs/aplicare"
apotekHttp "service/internal/infrastructure/transport/http/handlers/bpjs/apotek"
vclaimHttp "service/internal/infrastructure/transport/http/handlers/bpjs/vclaim"
authHttp "service/internal/infrastructure/transport/http/handlers/main/auth"
healthHttp "service/internal/infrastructure/transport/http/handlers/main/health"
roleHttp "service/internal/infrastructure/transport/http/handlers/main/master/roles"
@@ -30,11 +26,6 @@ type ModuleHandlers struct {
RolePages *roleHttp.RolPagesHandler
RolePermission *roleHttp.RolPermissionHandler
RoleMaster *roleHttp.RoleMasterHandler
Sep *vclaimHttp.SepHandler
Peserta *vclaimHttp.PesertaHandler
Antrol *antrolHttp.AntrolHandler
AplicareBed *aplicareHttp.BedHandler
ApotekReference *apotekHttp.ReferenceHandler
SatuSehatAuth *satuSehatRefHttp.AuthHandler
SatuSehatPatient *satuSehatRefHttp.PatientHandler
SatuSehatPractitioner *satuSehatRefHttp.PractitionerHandler
@@ -154,29 +145,6 @@ func SetupRoutes(
h.RoleMaster.RegisterRoutes(protected)
}
// --- Routes Modul BPJS VClaim ---
if h.Sep != nil {
h.Sep.RegisterRoutes(protected)
}
if h.Peserta != nil {
h.Peserta.RegisterRoutes(protected)
}
// --- Routes Modul BPJS Antrol ---
if h.Antrol != nil {
h.Antrol.RegisterRoutes(protected)
}
// --- Routes Modul BPJS Aplicares ---
if h.AplicareBed != nil {
h.AplicareBed.RegisterRoutes(protected)
}
// --- Routes Modul BPJS Apotek ---
if h.ApotekReference != nil {
h.ApotekReference.RegisterRoutes(protected)
}
// --- Routes Modul Satu Sehat ---
// Buat grup khusus untuk membatasi traffic hit API ke Kemenkes
satuSehatGroup := protected.Group("")
@@ -8,12 +8,6 @@ import (
"gorm.io/gorm"
"service/internal/auth"
antrol "service/internal/bpjs/antrol/reference"
aplicareBed "service/internal/bpjs/aplicare/bed"
apotekDpho "service/internal/bpjs/apotek/reference/dpho"
apotekPoli "service/internal/bpjs/apotek/reference/poli"
peserta "service/internal/bpjs/vclaim/peserta"
sep "service/internal/bpjs/vclaim/sep"
roleMaster "service/internal/master/role/master"
rolePages "service/internal/master/role/pages"
rolePermission "service/internal/master/role/permission"
@@ -51,28 +45,6 @@ type MasterServices struct {
RoleMaster roleMaster.Service
}
// VClaimServices menampung kumpulan service untuk integrasi BPJS VClaim
type VClaimServices struct {
Sep sep.Service
Peserta peserta.Service
}
// AntrolServices menampung kumpulan service untuk integrasi BPJS Antrean RS
type AntrolServices struct {
Reference antrol.Service
}
// AplicaresServices menampung kumpulan service untuk integrasi BPJS Aplicares
type AplicaresServices struct {
Bed aplicareBed.Service
}
// ApotekServices menampung kumpulan service untuk integrasi BPJS Apotek
type ApotekServices struct {
DPHO apotekDpho.Service
Poli apotekPoli.Service
}
// SatuSehatServices menampung kumpulan service untuk integrasi Kemenkes Satu Sehat
type SatuSehatServices struct {
Auth satuSehatAuth.Service
@@ -115,9 +87,5 @@ type ServiceRegistry struct {
// Modul Aplikasi (Pisahkan berdasarkan Bounded Context)
AuthService auth.Service
Master *MasterServices
VClaim *VClaimServices
Antrol *AntrolServices
Aplicare *AplicaresServices
Apotek *ApotekServices
SatuSehat *SatuSehatServices
}
@@ -13,10 +13,6 @@ import (
"service/internal/infrastructure/transport/http/middleware"
"service/internal/infrastructure/transport/http/routes"
antrolHttp "service/internal/infrastructure/transport/http/handlers/bpjs/antrol"
aplicareHttp "service/internal/infrastructure/transport/http/handlers/bpjs/aplicare"
apotekHttp "service/internal/infrastructure/transport/http/handlers/bpjs/apotek"
vclaimHttp "service/internal/infrastructure/transport/http/handlers/bpjs/vclaim"
authHttp "service/internal/infrastructure/transport/http/handlers/main/auth"
healthHttp "service/internal/infrastructure/transport/http/handlers/main/health"
roleHttp "service/internal/infrastructure/transport/http/handlers/main/master/roles"
@@ -88,37 +84,6 @@ func NewHTTPServer(
}
}
// Inisialisasi Handlers Modul VClaim
if registry.VClaim != nil {
if registry.VClaim.Sep != nil {
appHandlers.Sep = vclaimHttp.NewSepHandler(registry.VClaim.Sep)
}
if registry.VClaim.Peserta != nil {
appHandlers.Peserta = vclaimHttp.NewPesertaHandler(registry.VClaim.Peserta)
}
}
// Inisialisasi Handlers Modul Antrol
if registry.Antrol != nil {
if registry.Antrol.Reference != nil {
appHandlers.Antrol = antrolHttp.NewAntrolHandler(registry.Antrol.Reference)
}
}
// Inisialisasi Handlers Modul Aplicares
if registry.Aplicare != nil {
if registry.Aplicare.Bed != nil {
appHandlers.AplicareBed = aplicareHttp.NewBedHandler(registry.Aplicare.Bed)
}
}
// Inisialisasi Handlers Modul Apotek
if registry.Apotek != nil {
if registry.Apotek.DPHO != nil && registry.Apotek.Poli != nil {
appHandlers.ApotekReference = apotekHttp.NewReferenceHandler(registry.Apotek.DPHO, registry.Apotek.Poli)
}
}
// Inisialisasi Handlers Modul Satu Sehat
if registry.SatuSehat != nil {
if registry.SatuSehat.Auth != nil {