repo.go

 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}