87 lines
4.1 KiB
Go
87 lines
4.1 KiB
Go
package database
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
|
|
"github.com/yyc12345/coconut-leaf/backend/config"
|
|
)
|
|
|
|
// CalendarUpdateOptions carries the optional fields of CalendarUpdate. A nil
|
|
// pointer means "not provided", mirroring the legacy **optArgs semantics: a
|
|
// field is applied only when its pointer is non-nil.
|
|
type CalendarUpdateOptions struct {
|
|
BelongTo *string
|
|
Title *string
|
|
Description *string
|
|
EventDateTimeStart *int64
|
|
EventDateTimeEnd *int64
|
|
LoopRules *string
|
|
TimezoneOffset *int64
|
|
}
|
|
|
|
// AdminUpdateOptions carries the optional fields of AdminUpdate. A nil pointer
|
|
// means "not provided".
|
|
type AdminUpdateOptions struct {
|
|
Password *string
|
|
IsAdmin *bool
|
|
}
|
|
|
|
// Deps bundles the shared dependencies a database implementation needs: the
|
|
// loaded configuration and a logger. It is passed to database constructors and
|
|
// stored inside each implementation so they can read config and emit logs.
|
|
type Deps struct {
|
|
Cfg *config.Config
|
|
Logger *slog.Logger
|
|
}
|
|
|
|
// Database describes every database operation the Gin server may use. It is the
|
|
// Go equivalent of the legacy CalendarDatabase public surface: each method takes
|
|
// a context.Context for cancellation and returns (any, error). The server layer
|
|
// is responsible for wrapping the result into an HTTP response body.
|
|
type Database interface {
|
|
Init(username, password string) error
|
|
Close() error
|
|
|
|
CommonSalt(ctx context.Context, username string) (any, error)
|
|
CommonLogin(ctx context.Context, username, password, clientUa, clientIp string) (any, error)
|
|
CommonWebLogin(ctx context.Context, username, password, clientUa, clientIp string) (any, error)
|
|
CommonLogout(ctx context.Context, token string) (any, error)
|
|
CommonTokenValid(ctx context.Context, token string) (any, error)
|
|
|
|
CalendarGetFull(ctx context.Context, token string, startDateTime, endDateTime int64) (any, error)
|
|
CalendarGetList(ctx context.Context, token string, startDateTime, endDateTime int64) (any, error)
|
|
CalendarGetDetail(ctx context.Context, token, uuid string) (any, error)
|
|
CalendarUpdate(ctx context.Context, token, uuid, lastChange string, opts CalendarUpdateOptions) (any, error)
|
|
CalendarAdd(ctx context.Context, token, belongTo, title, description string, eventDateTimeStart, eventDateTimeEnd int64, loopRules string, timezoneOffset int64) (any, error)
|
|
CalendarDelete(ctx context.Context, token, uuid, lastChange string) (any, error)
|
|
|
|
CollectionGetFullOwn(ctx context.Context, token string) (any, error)
|
|
CollectionGetListOwn(ctx context.Context, token string) (any, error)
|
|
CollectionGetDetailOwn(ctx context.Context, token, uuid string) (any, error)
|
|
CollectionAddOwn(ctx context.Context, token, name string) (any, error)
|
|
CollectionUpdateOwn(ctx context.Context, token, uuid, name, lastChange string) (any, error)
|
|
CollectionDeleteOwn(ctx context.Context, token, uuid, lastChange string) (any, error)
|
|
CollectionGetSharing(ctx context.Context, token, uuid string) (any, error)
|
|
CollectionDeleteSharing(ctx context.Context, token, uuid, target, lastChange string) (any, error)
|
|
CollectionAddSharing(ctx context.Context, token, uuid, target, lastChange string) (any, error)
|
|
CollectionGetShared(ctx context.Context, token string) (any, error)
|
|
|
|
TodoGetFull(ctx context.Context, token string) (any, error)
|
|
TodoGetList(ctx context.Context, token string) (any, error)
|
|
TodoGetDetail(ctx context.Context, token, uuid string) (any, error)
|
|
TodoAdd(ctx context.Context, token string) (any, error)
|
|
TodoUpdate(ctx context.Context, token, uuid, data, lastChange string) (any, error)
|
|
TodoDelete(ctx context.Context, token, uuid, lastChange string) (any, error)
|
|
|
|
AdminGet(ctx context.Context, token string) (any, error)
|
|
AdminAdd(ctx context.Context, token, username string) (any, error)
|
|
AdminUpdate(ctx context.Context, token, username string, opts AdminUpdateOptions) (any, error)
|
|
AdminDelete(ctx context.Context, token, username string) (any, error)
|
|
|
|
ProfileIsAdmin(ctx context.Context, token string) (any, error)
|
|
ProfileChangePassword(ctx context.Context, token, password string) (any, error)
|
|
ProfileGetToken(ctx context.Context, token string) (any, error)
|
|
ProfileDeleteToken(ctx context.Context, token, deleteToken string) (any, error)
|
|
}
|