Versions in this module Expand all Collapse all v0 v0.38.0 Feb 19, 2026 v0.37.0 Feb 15, 2026 v0.36.0 Feb 14, 2026 v0.35.0 Feb 14, 2026 v0.34.0 Feb 11, 2026 v0.33.0 Feb 10, 2026 v0.32.0 Feb 9, 2026 Changes in this version + const AuthEventCodeVerified + const AuthEventExpired + const AuthEventFailed + const AuthEventKeyIssued + const AuthEventStarted + const DefaultPageLimit + const MaxPageLimit + func EncodeCursor(data CursorData) string + func NormalizeLimit(limit int) int + type AdminProject struct + CreatedAt string + DeletedAt *string + Description string + EventCount int + ID string + LastEventAt *string + MemberCount int + Name string + UpdatedAt string + type AdminProjectMember struct + CreatedAt string + Email string + InvitedBy string + Role string + UserID string + type AdminUser struct + CreatedAt string + Email string + ID string + IsAdmin bool + LastActivity *string + ProjectCount int + type AdminUserDetail struct + Projects []UserProject + type AuthEvent struct + AuthRequestID string + CreatedAt string + Email string + EventType string + ID int64 + Metadata string + type CursorData struct + CreatedAt string + ID string + Value string + func DecodeCursor(cursor string) (CursorData, error) + type PaginatedResult struct + Data []T + HasMore bool + NextCursor string + func PaginatedQuery[T any](db *sql.DB, baseQuery string, args []any, limit int, cursor string, ...) (*PaginatedResult[T], error) type Project + EventCount int + LastEventAt *time.Time + type RateLimitEvent struct + CreatedAt string + EndpointClass string + ID int64 + IP string + KeyID string type ServerDB + func (db *ServerDB) AdminGetProject(id string) (*AdminProject, error) + func (db *ServerDB) AdminGetUser(id string) (*AdminUserDetail, error) + func (db *ServerDB) AdminListProjectMembers(projectID string) ([]AdminProjectMember, error) + func (db *ServerDB) AdminListProjects(query string, includeDeleted bool, limit int, cursor string) (*PaginatedResult[AdminProject], error) + func (db *ServerDB) AdminListUsers(query string, limit int, cursor string) (*PaginatedResult[AdminUser], error) + func (db *ServerDB) CleanupAuthEvents(olderThan time.Duration) (int64, error) + func (db *ServerDB) CleanupRateLimitEvents(olderThan time.Duration) (int64, error) + func (db *ServerDB) CountAdmins() (int, error) + func (db *ServerDB) CountMembers() (int, error) + func (db *ServerDB) CountProjects() (int, error) + func (db *ServerDB) CountUsers() (int, error) + func (db *ServerDB) GetPendingExpiredAuthRequests() ([]AuthRequest, error) + func (db *ServerDB) GetProjectEventCount(projectID string) (int, *time.Time, error) + func (db *ServerDB) InsertAuthEvent(authRequestID, email, eventType, metadata string) error + func (db *ServerDB) InsertRateLimitEvent(keyID, ip, endpointClass string) error + func (db *ServerDB) IsUserAdmin(userID string) (bool, error) + func (db *ServerDB) ListAPIKeysForUser(userID string) ([]*APIKey, error) + func (db *ServerDB) ListSyncCursorsForProject(projectID string) ([]SyncCursor, error) + func (db *ServerDB) QueryAuthEvents(eventType, email, from, to string, limit int, cursor string) (*PaginatedResult[AuthEvent], error) + func (db *ServerDB) QueryRateLimitEvents(keyID, ip, from, to string, limit int, cursor string) (*PaginatedResult[RateLimitEvent], error) + func (db *ServerDB) SetUserAdmin(email string, isAdmin bool) error + func (db *ServerDB) UpdateProjectEventCount(projectID string, newEvents int, lastEventAt time.Time) error type User + IsAdmin bool + type UserProject struct + Name string + ProjectID string + Role string v0.31.0 Feb 7, 2026 v0.30.0 Feb 6, 2026 Changes in this version + const AuthRequestTTL + const AuthStatusExpired + const AuthStatusPending + const AuthStatusUsed + const AuthStatusVerified + const PollInterval + const RoleOwner + const RoleReader + const RoleWriter + const ServerSchemaVersion + var Migrations = []Migration + func NewID() string + type APIKey struct + CreatedAt time.Time + ExpiresAt *time.Time + ID string + KeyPrefix string + LastUsedAt *time.Time + Name string + Scopes string + UserID string + type AuthRequest struct + APIKeyID *string + CreatedAt time.Time + DeviceCode string + Email string + ExpiresAt time.Time + ID string + Status string + UserCode string + UserID *string + VerifiedAt *time.Time + type Membership struct + CreatedAt time.Time + InvitedBy string + ProjectID string + Role string + UserID string + type Migration struct + Description string + SQL string + Version int + type Project struct + CreatedAt time.Time + DeletedAt *time.Time + Description string + ID string + Name string + UpdatedAt time.Time + type ServerDB struct + func Open(dbPath string) (*ServerDB, error) + func (db *ServerDB) AddMember(projectID, userID, role, invitedByUserID string) (*Membership, error) + func (db *ServerDB) Authorize(projectID, userID, requiredRole string) error + func (db *ServerDB) CanDeleteProject(projectID, userID string) error + func (db *ServerDB) CanManageMembers(projectID, userID string) error + func (db *ServerDB) CanPullEvents(projectID, userID string) error + func (db *ServerDB) CanPushEvents(projectID, userID string) error + func (db *ServerDB) CanViewProject(projectID, userID string) error + func (db *ServerDB) CleanupExpiredAuthRequests() (int64, error) + func (db *ServerDB) Close() error + func (db *ServerDB) CompleteAuthRequest(deviceCode string) (*AuthRequest, error) + func (db *ServerDB) CreateAuthRequest(email string) (*AuthRequest, error) + func (db *ServerDB) CreateProject(name, description, ownerUserID string) (*Project, error) + func (db *ServerDB) CreateProjectWithID(id, name, description, ownerUserID string) (*Project, error) + func (db *ServerDB) CreateUser(email string) (*User, error) + func (db *ServerDB) ForceExpireAuthRequestForTest(id string, expiresAt time.Time) + func (db *ServerDB) GenerateAPIKey(userID, name, scopes string, expiresAt *time.Time) (string, *APIKey, error) + func (db *ServerDB) GetAuthRequestByDeviceCode(deviceCode string) (*AuthRequest, error) + func (db *ServerDB) GetAuthRequestByUserCode(userCode string) (*AuthRequest, error) + func (db *ServerDB) GetMembership(projectID, userID string) (*Membership, error) + func (db *ServerDB) GetProject(id string, includeSoftDeleted bool) (*Project, error) + func (db *ServerDB) GetSyncCursor(projectID, clientID string) (*SyncCursor, error) + func (db *ServerDB) GetUserByEmail(email string) (*User, error) + func (db *ServerDB) GetUserByID(id string) (*User, error) + func (db *ServerDB) ListAPIKeys(userID string) ([]*APIKey, error) + func (db *ServerDB) ListMembers(projectID string) ([]*Membership, error) + func (db *ServerDB) ListProjectsForUser(userID string) ([]*Project, error) + func (db *ServerDB) ListUsers() ([]*User, error) + func (db *ServerDB) Ping() error + func (db *ServerDB) RemoveMember(projectID, userID string) error + func (db *ServerDB) RevokeAPIKey(keyID, userID string) error + func (db *ServerDB) RunMigrations() (int, error) + func (db *ServerDB) SetAuthRequestAPIKey(id, apiKeyID string) error + func (db *ServerDB) SetEmailVerified(userID string) error + func (db *ServerDB) SoftDeleteProject(id string) error + func (db *ServerDB) UpdateMemberRole(projectID, userID, newRole string) error + func (db *ServerDB) UpdateProject(id, name, description string) (*Project, error) + func (db *ServerDB) UpsertSyncCursor(projectID, clientID string, lastEventID int64) error + func (db *ServerDB) VerifyAPIKey(plaintextKey string) (*APIKey, *User, error) + func (db *ServerDB) VerifyAuthRequest(userCode, userID string) error + type SyncCursor struct + ClientID string + LastEventID int64 + LastSyncAt *time.Time + ProjectID string + type User struct + CreatedAt time.Time + Email string + EmailVerifiedAt *time.Time + ID string + UpdatedAt time.Time