-
Notifications
You must be signed in to change notification settings - Fork 0
/
repositories.go
34 lines (30 loc) · 1023 Bytes
/
repositories.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package manager
import "net/url"
// ProjectRepository defines methods required
// to work with projects
type ProjectRepository interface {
GetAll() ([]Project, error)
GetByName(name string) (*Project, error)
Save(project Project) error
}
// FileRepository abstracts interactions
// with a file repository (e.g. S3, disk...)
type FileRepository interface {
GetAll() ([]File, error)
GetAllByFolder() (FilesByFolder, error)
GetFolderForFile(File) (string, error)
GetFilenameForFile(File) (string, error)
RemoveFile(File) error
GetURL(File) (*url.URL, error)
}
// AccountRepository abstracts interactions with
// user accounts allowed to manage projects & files
type AccountRepository interface {
List() ([]Account, error)
Get(username string) (*Account, error)
// Create must return an automatically generated password for the created user
Create(username string) (string, error)
Delete(username string) error
ChangePassword(username string) (string, error)
Authenticate(username, password string) error
}