1package db
2
3import (
4 "github.com/charmbracelet/soft-serve/server/db/types"
5)
6
7// ConfigStore is a configuration database storage.
8type ConfigStore interface {
9 // Config
10 GetConfig() (*types.Config, error)
11 SetConfigName(string) error
12 SetConfigHost(string) error
13 SetConfigPort(int) error
14 SetConfigAnonAccess(string) error
15 SetConfigAllowKeyless(bool) error
16}
17
18// UserStore is a user database storage.
19type UserStore interface {
20 // Users
21 AddUser(name, login, email, password string, isAdmin bool) error
22 DeleteUser(int) error
23 GetUser(int) (*types.User, error)
24 GetUserByLogin(string) (*types.User, error)
25 GetUserByEmail(string) (*types.User, error)
26 GetUserByPublicKey(string) (*types.User, error)
27 SetUserName(*types.User, string) error
28 SetUserLogin(*types.User, string) error
29 SetUserEmail(*types.User, string) error
30 SetUserPassword(*types.User, string) error
31 SetUserAdmin(*types.User, bool) error
32}
33
34// PublicKeyStore is a public key database storage.
35type PublicKeyStore interface {
36 // Public keys
37 AddUserPublicKey(*types.User, string) error
38 DeleteUserPublicKey(int) error
39 GetUserPublicKeys(*types.User) ([]*types.PublicKey, error)
40}
41
42// RepoStore is a repository database storage.
43type RepoStore interface {
44 // Repos
45 AddRepo(name, projectName, description string, isPrivate bool) error
46 DeleteRepo(string) error
47 GetRepo(string) (*types.Repo, error)
48 SetRepoProjectName(string, string) error
49 SetRepoDescription(string, string) error
50 SetRepoPrivate(string, bool) error
51}
52
53// CollabStore is a collaborator database storage.
54type CollabStore interface {
55 // Collaborators
56 AddRepoCollab(*types.Repo, *types.User) error
57 DeleteRepoCollab(int, int) error
58 ListRepoCollabs(*types.Repo) ([]*types.User, error)
59}
60
61// DB is a database.
62type DB interface {
63 ConfigStore
64 UserStore
65 PublicKeyStore
66 RepoStore
67 CollabStore
68
69 // CreateDB creates the database.
70 CreateDB() error
71
72 // Close closes the database.
73 Close() error
74}