db.go

 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}