57 lines
1.3 KiB
Go
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)
|
|
}
|