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}