1package sqlite
2
3import (
4 "github.com/charmbracelet/soft-serve/proto"
5 "github.com/charmbracelet/soft-serve/server/db/types"
6)
7
8// Open opens a repository.
9func (d *Sqlite) Open(name string) (proto.RepositoryService, error) {
10 r, err := d.GetRepo(name)
11 if err != nil {
12 return nil, err
13 }
14 return &repository{
15 repo: r,
16 db: d,
17 }, nil
18}
19
20type repository struct {
21 repo *types.Repo
22 db *Sqlite
23}
24
25// Name returns the repository's name.
26func (r *repository) Name() string {
27 return r.repo.Name
28}
29
30// ProjectName returns the repository's project name.
31func (r *repository) ProjectName() string {
32 return r.repo.ProjectName
33}
34
35// SetProjectName sets the repository's project name.
36func (r *repository) SetProjectName(name string) error {
37 return r.db.SetRepoProjectName(r.repo.Name, name)
38}
39
40// Description returns the repository's description.
41func (r *repository) Description() string {
42 return r.repo.Description
43}
44
45// SetDescription sets the repository's description.
46func (r *repository) SetDescription(desc string) error {
47 return r.db.SetRepoDescription(r.repo.Name, desc)
48}
49
50// IsPrivate returns whether the repository is private.
51func (r *repository) IsPrivate() bool {
52 return r.repo.Private
53}
54
55// SetPrivate sets whether the repository is private.
56func (r *repository) SetPrivate(p bool) error {
57 return r.db.SetRepoPrivate(r.repo.Name, p)
58}