mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-04 17:34:49 -04:00
add createrepository & deleterepository
This commit is contained in:
parent
b5ba387891
commit
a30e5bcaf8
2 changed files with 96 additions and 0 deletions
|
@ -3,3 +3,69 @@
|
|||
// license that can be found in the LICENSE file.
|
||||
|
||||
package models
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"github.com/lunny/xorm"
|
||||
|
||||
git "github.com/libgit2/git2go"
|
||||
)
|
||||
|
||||
const (
|
||||
UserRepo = iota
|
||||
OrgRepo
|
||||
)
|
||||
|
||||
type User struct {
|
||||
Id int64
|
||||
Name string `xorm:"unique"`
|
||||
}
|
||||
|
||||
type Org struct {
|
||||
Id int64
|
||||
}
|
||||
|
||||
type Repo struct {
|
||||
Id int64
|
||||
OwnerId int64 `xorm:"unique(s)"`
|
||||
Type int `xorm:"unique(s)"`
|
||||
Name string `xorm:"unique(s)"`
|
||||
}
|
||||
|
||||
var (
|
||||
orm *xorm.Engine
|
||||
)
|
||||
|
||||
//
|
||||
// create a repository for a user or orgnaziation
|
||||
//
|
||||
func CreateUserRepository(root string, user *User, reposName string) error {
|
||||
p := filepath.Join(root, user.Name)
|
||||
os.MkdirAll(p, os.ModePerm)
|
||||
f := filepath.Join(p, reposName)
|
||||
_, err := git.InitRepository(f, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repo := Repo{OwnerId: user.Id, Type: UserRepo, Name: reposName}
|
||||
_, err = orm.Insert(&repo)
|
||||
if err != nil {
|
||||
os.RemoveAll(f)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
//
|
||||
// delete a repository for a user or orgnaztion
|
||||
//
|
||||
func DeleteUserRepository(root string, user *User, reposName string) error {
|
||||
err := os.RemoveAll(filepath.Join(root, user.Name, reposName))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = orm.Delete(&Repo{OwnerId: user.Id, Type: UserRepo, Name: reposName})
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue