diff --git a/configs/config.yml b/configs/config.yml new file mode 100644 index 0000000..ce84bd4 --- /dev/null +++ b/configs/config.yml @@ -0,0 +1,6 @@ +port: "8013" +db: + host: "mysql-pl-wa10.joinserver.xyz" + port: "3306" + username: "u45925_HjjJCz8EVf" + dbname: "s45925_tentula" \ No newline at end of file diff --git a/pkg/repository/invite_schema.go b/pkg/repository/invite_schema.go new file mode 100644 index 0000000..0ee28f6 --- /dev/null +++ b/pkg/repository/invite_schema.go @@ -0,0 +1,50 @@ +package repository + +import ( + "esproject" + "fmt" + + "gorm.io/gorm" +) + +type InviteSchema struct { + db *gorm.DB +} + +func NewInviteSchema(db *gorm.DB) *InviteSchema { + return &InviteSchema{db: db} +} + +func (r InviteSchema) CreateInvite(project int64, user int64) (*esproject.ProjectInvite, error) { + invite := &esproject.ProjectInvite{ + Project: project, + User: user, + } + err := r.db.Create(invite).Error + return invite, err +} + +func (r InviteSchema) GetInvite(id int64) (*esproject.ProjectInvite, error) { + invite := esproject.ProjectInvite{} + err := r.db.Find(&invite, "id = ?", id).Error + if invite.Id == -1 { + err = fmt.Errorf("unknown invite %d", id) + } + return &invite, err +} + +func (r InviteSchema) FindInvites(query, param string) ([]esproject.ProjectInvite, error) { + var invites []esproject.ProjectInvite + err := r.db.Find(&invites, query, param).Error + return invites, err +} + +func (r InviteSchema) DeleteInvite(id int64) error { + invite := esproject.ProjectInvite{} + err := r.db.Find(&invite, "id = ?", id).Error + if invite.Id == -1 { + err = fmt.Errorf("unknown invite %d", id) + } + r.db.Delete(invite) + return err +} diff --git a/pkg/repository/repository.go b/pkg/repository/repository.go new file mode 100644 index 0000000..b8d0157 --- /dev/null +++ b/pkg/repository/repository.go @@ -0,0 +1,35 @@ +package repository + +import ( + "esproject" + + "gorm.io/gorm" +) + +type Project interface { + CreateProject(owner int64, name string, tags []string) (*esproject.Project, error) + SaveProject(user *esproject.Project) (int64, error) + GetProject(id int64) (*esproject.Project, error) + GetProjects(start, limit int) []int64 + DeleteProject(id int64) error + GetProjectsCount() int64 +} + +type ProjectInvite interface { + CreateInvite(project int64, user int64) (*esproject.ProjectInvite, error) + GetInvite(id int64) (*esproject.ProjectInvite, error) + FindInvites(query, param string) ([]esproject.ProjectInvite, error) + DeleteInvite(id int64) error +} + +type Repository struct { + Project + ProjectInvite +} + +func NewRepository(db *gorm.DB) *Repository { + return &Repository{ + Project: NewProjectSchema(db), + ProjectInvite: NewInviteSchema(db), + } +}