mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	Add DB functionality for federated repos
This commit is contained in:
		
					parent
					
						
							
								288dda282c
							
						
					
				
			
			
				commit
				
					
						36c0c1c3c1
					
				
			
		
					 1 changed files with 49 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -4,9 +4,58 @@
 | 
			
		|||
package repo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	"code.gitea.io/gitea/modules/validation"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	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…
	
	Add table
		Add a link
		
	
		Reference in a new issue