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
 | 
					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…
	
	Add table
		Add a link
		
	
		Reference in a new issue