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 SetRepoName(string, string) error
39 SetRepoProjectName(string, string) error
40 SetRepoDescription(string, string) error
41 SetRepoPrivate(string, bool) error
42}
43
44// CollabStore is a collaborator database storage.
45type CollabStore interface {
46 // Collaborators
47 AddRepoCollab(string, *types.User) error
48 DeleteRepoCollab(int, int) error
49 ListRepoCollabs(string) ([]*types.User, error)
50 ListRepoPublicKeys(string) ([]*types.PublicKey, error)
51 IsRepoPublicKeyCollab(string, string) (bool, error)
52}
53
54// Store is a database.
55type Store interface {
56 UserStore
57 PublicKeyStore
58 RepoStore
59 CollabStore
60
61 // CreateDB creates the database.
62 CreateDB() error
63
64 // Close closes the database.
65 Close() error
66}