mirror of
https://codeberg.org/forgejo/forgejo
synced 2024-11-22 09:54:24 +01:00
Add DB functionality for federated repos
This commit is contained in:
parent
288dda282c
commit
36c0c1c3c1
|
@ -4,9 +4,58 @@
|
||||||
package repo
|
package repo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/modules/validation"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
db.RegisterModel(new(FederatedRepo))
|
db.RegisterModel(new(FederatedRepo))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetFederatedRepo(ctx context.Context, ID int64) (*FederatedRepo, error) {
|
||||||
|
repo := new(FederatedRepo)
|
||||||
|
has, err := db.GetEngine(ctx).Where("id=?", ID).Get(repo)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if !has {
|
||||||
|
return nil, fmt.Errorf("FederationInfo record %v does not exist", ID)
|
||||||
|
}
|
||||||
|
if res, err := validation.IsValid(repo); !res {
|
||||||
|
return nil, fmt.Errorf("FederationInfo is not valid: %v", err)
|
||||||
|
}
|
||||||
|
return repo, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func FindFederatedRepoByFQDN(ctx context.Context, fqdn string) (*FederatedRepo, error) {
|
||||||
|
repo := new(FederatedRepo)
|
||||||
|
has, err := db.GetEngine(ctx).Where("host_fqdn=?", strings.ToLower(fqdn)).Get(repo)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if !has {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
if res, err := validation.IsValid(repo); !res {
|
||||||
|
return nil, fmt.Errorf("FederationInfo is not valid: %v", err)
|
||||||
|
}
|
||||||
|
return repo, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateFederatedRepo(ctx context.Context, repo *FederatedRepo) error {
|
||||||
|
if res, err := validation.IsValid(repo); !res {
|
||||||
|
return fmt.Errorf("FederationInfo is not valid: %v", err)
|
||||||
|
}
|
||||||
|
_, err := db.GetEngine(ctx).Insert(repo)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateFederatedRepo(ctx context.Context, repo *FederatedRepo) error {
|
||||||
|
if res, err := validation.IsValid(repo); !res {
|
||||||
|
return fmt.Errorf("FederationInfo is not valid: %v", err)
|
||||||
|
}
|
||||||
|
_, err := db.GetEngine(ctx).ID(repo.ID).Update(repo)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue