serviceCachemdl.go 2.15 KiB
Newer Older
Roshan Patil's avatar
Roshan Patil committed
package routebuildermdl

import (
	"mime/multipart"
	"time"

	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/cachemdl"
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/servicebuildermdl"
)

var restrictedServices cachemdl.FastCacheHelper
var roleBasedServices cachemdl.FastCacheHelper
Roshan Patil's avatar
Roshan Patil committed
var openServices cachemdl.FastCacheHelper

func init() {
	restrictedServices.Setup(10, time.Second*600, time.Second*600)
	openServices.Setup(10, time.Second*600, time.Second*600)
	roleBasedServices.Setup(10, time.Second*600, time.Second*600)
Roshan Patil's avatar
Roshan Patil committed
}

// ServiceCache ServiceCache object
type ServiceCache struct {
	Service         func([]byte) (interface{}, error)
	FormService     func(*multipart.Form) (interface{}, error)
	MasterService   *servicebuildermdl.ServiceBuilder
	IsMasterService bool
	IsFormService   bool
}

// RegisterNormalService is for transactional services
func RegisterNormalService(serviceName string, servicePtr func([]byte) (interface{}, error), isRestricted, isRoleBased bool) {
Roshan Patil's avatar
Roshan Patil committed
	service := ServiceCache{
		Service: servicePtr,
	}
	if isRestricted {
		if isRoleBased {
			roleBasedServices.Set(serviceName, service)
		} else {
			restrictedServices.Set(serviceName, service)
		}
Roshan Patil's avatar
Roshan Patil committed
	}
	openServices.Set(serviceName, service)
// RegisterFormBasedService if for multipart form based services
func RegisterFormBasedService(serviceName string, servicePtr func(*multipart.Form) (interface{}, error), isRestricted, isRoleBased bool) {
Roshan Patil's avatar
Roshan Patil committed
	service := ServiceCache{
		FormService:   servicePtr,
		IsFormService: true,
	}
	if isRestricted {
		if isRoleBased {
			roleBasedServices.Set(serviceName, service)
		} else {
			restrictedServices.Set(serviceName, service)
		}
Roshan Patil's avatar
Roshan Patil committed
	}
	openServices.Set(serviceName, service)
// RegisterMasterService is for getting master type of file
func RegisterMasterService(serviceName string, servicePtr *servicebuildermdl.ServiceBuilder, isRestricted, isRoleBased bool) {
Roshan Patil's avatar
Roshan Patil committed
	service := ServiceCache{
		MasterService:   servicePtr,
		IsMasterService: true,
	}
	if isRestricted {
		if isRoleBased {
			roleBasedServices.Set(serviceName, service)
		} else {
			restrictedServices.Set(serviceName, service)
		}
Roshan Patil's avatar
Roshan Patil committed
	}
	openServices.Set(serviceName, service)
Roshan Patil's avatar
Roshan Patil committed
}