This repository has been archived on 2024-04-07. You can view files and clone it, but cannot push or open issues or pull requests.
summer-utils/api/crud/function-provider.go
2023-04-16 11:56:17 +01:00

57 lines
1.3 KiB
Go

package crud
import (
"code.mrmelon54.com/melon/summer/pkg/claims/auth"
)
type FunctionProvider[T any] struct {
InnerFind fFind[T]
InnerAdd fAdd[T]
InnerGet fGet[T]
InnerPut fPut[T]
InnerPatch fPatch[T]
InnerDelete fDelete
}
func (f FunctionProvider[T]) Find(claims *auth.AccessTokenClaims) ([]T, error) {
if f.InnerFind == nil {
return nil, ErrMethodNotAllowed
}
return f.InnerFind(claims)
}
func (f FunctionProvider[T]) Add(claims *auth.AccessTokenClaims, item T) (T, error) {
if f.InnerAdd == nil {
return *new(T), ErrMethodNotAllowed
}
return f.InnerAdd(claims, item)
}
func (f FunctionProvider[T]) Get(claims *auth.AccessTokenClaims, id string) (T, bool, error) {
if f.InnerGet == nil {
return *new(T), false, ErrMethodNotAllowed
}
return f.InnerGet(claims, id)
}
func (f FunctionProvider[T]) Put(claims *auth.AccessTokenClaims, id string, item T) error {
if f.InnerPut == nil {
return ErrMethodNotAllowed
}
return f.InnerPut(claims, id, item)
}
func (f FunctionProvider[T]) Patch(claims *auth.AccessTokenClaims, id string, item T) error {
if f.InnerPatch == nil {
return ErrMethodNotAllowed
}
return f.InnerPatch(claims, id, item)
}
func (f FunctionProvider[T]) Delete(claims *auth.AccessTokenClaims, id string) error {
if f.InnerDelete == nil {
return ErrMethodNotAllowed
}
return f.InnerDelete(claims, id)
}