db.go

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