1
0
Files

87 lines
4.1 KiB
Go
Raw Permalink Normal View History

2026-07-16 20:13:49 +08:00
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.
2026-07-16 20:13:49 +08:00
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)
2026-07-16 20:13:49 +08:00
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)
2026-07-16 20:13:49 +08:00
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)
2026-07-16 20:13:49 +08:00
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)
2026-07-16 20:13:49 +08:00
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)
2026-07-16 20:13:49 +08:00
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)
2026-07-16 20:13:49 +08:00
}