61 lines
2.7 KiB
Go
61 lines
2.7 KiB
Go
package datastore
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"git.itzana.me/StrafesNET/dev-service/pkg/model"
|
|
)
|
|
|
|
var ErrNotExists = errors.New("resource does not exist")
|
|
|
|
const (
|
|
DefaultPageLimit = 10
|
|
)
|
|
|
|
type Datastore interface {
|
|
// Permission
|
|
CreatePermission(ctx context.Context, permission *model.Permission) error
|
|
GetPermission(ctx context.Context, id uint32) (*model.Permission, error)
|
|
GetAllPermissions(ctx context.Context) ([]model.Permission, error)
|
|
UpdatePermission(ctx context.Context, permission *model.Permission) error
|
|
DeletePermission(ctx context.Context, id uint32) error
|
|
GetDefaultPermissions(ctx context.Context) ([]model.Permission, error)
|
|
SetPermissionAsDefault(ctx context.Context, id uint32, isDefault bool) error
|
|
|
|
// Rate Limit
|
|
CreateRateLimit(ctx context.Context, rl *model.RateLimit) error
|
|
GetRateLimit(ctx context.Context, id uint32) (*model.RateLimit, error)
|
|
GetAllRateLimits(ctx context.Context) ([]model.RateLimit, error)
|
|
UpdateRateLimit(ctx context.Context, rl *model.RateLimit) error
|
|
DeleteRateLimit(ctx context.Context, id uint32) error
|
|
|
|
// User
|
|
CreateUser(ctx context.Context, user *model.User) error
|
|
GetUser(ctx context.Context, id uint64) (*model.User, error)
|
|
GetAllUsers(ctx context.Context, pagination *CursorPagination) ([]model.User, error)
|
|
SearchUsers(ctx context.Context, query string) ([]model.User, error)
|
|
UpdateUser(ctx context.Context, user *model.User) error
|
|
DeleteUser(ctx context.Context, id uint64) error
|
|
AddPermissionToUser(ctx context.Context, userID uint64, permissionID uint32) error
|
|
RemovePermissionFromUser(ctx context.Context, userID uint64, permissionID uint32) error
|
|
|
|
// Application
|
|
CreateApplication(ctx context.Context, app *model.Application) error
|
|
GetApplication(ctx context.Context, id uint32) (*model.Application, error)
|
|
GetApplicationByAPIKey(ctx context.Context, apiKey string) (*model.Application, error)
|
|
GetAllApplications(ctx context.Context) ([]model.Application, error)
|
|
GetApplicationsForUser(ctx context.Context, userID uint64) ([]model.Application, error)
|
|
UpdateApplication(ctx context.Context, app *model.Application) error
|
|
DeleteApplication(ctx context.Context, id uint32) error
|
|
AddPermissionToApplication(ctx context.Context, appID, permissionID uint32) error
|
|
RemovePermissionFromApplication(ctx context.Context, appID, permissionID uint32) error
|
|
GetApplicationCountForUser(ctx context.Context, userID uint64) (uint32, error)
|
|
|
|
// Request
|
|
CreateRequest(ctx context.Context, req *model.Request) error
|
|
GetRequest(ctx context.Context, id uint32) (*model.Request, error)
|
|
GetAllRequests(ctx context.Context) ([]model.Request, error)
|
|
UpdateRequest(ctx context.Context, req *model.Request) error
|
|
DeleteRequest(ctx context.Context, id uint32) error
|
|
}
|