update go.mod, go.sum, handler.go, main.go, project_schema.go
This commit is contained in:
1 parent
ec41b05a32
commit
9c20b1c03d
6 files changed
+678
No files matched your search
@@ -0,0 +1,60 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"esproject/docs"
|
||||
"esproject/pkg/repository"
|
||||
"esproject/pkg/service"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
)
|
||||
|
||||
type Handler struct {
|
||||
services *service.Service
|
||||
repo *repository.Repository
|
||||
}
|
||||
|
||||
func NewHandler(services *service.Service, repo *repository.Repository) *Handler {
|
||||
return &Handler{services: services, repo: repo}
|
||||
}
|
||||
|
||||
// @title EasyStartup Project
|
||||
// @version 1.0
|
||||
// @description Project service for EasyStartup.
|
||||
//
|
||||
// @contact.name API Support
|
||||
// @contact.email red.tea.dev@gmail.com
|
||||
//
|
||||
// @host project.easystartup.su
|
||||
// @BasePath /api
|
||||
//
|
||||
|
||||
func (h *Handler) InitRoutes() *gin.Engine {
|
||||
router := gin.New()
|
||||
docs.SwaggerInfo.BasePath = "/"
|
||||
|
||||
api := router.Group("/api", h.userIdentity)
|
||||
{
|
||||
api.DELETE("project/:id", h.delete)
|
||||
api.GET("project/:id", h.getProject)
|
||||
api.POST("project/:id", h.editProject)
|
||||
api.GET("project/all", h.all)
|
||||
api.GET("project/count", h.count)
|
||||
api.GET("project/my", h.my)
|
||||
api.PUT("project", h.create)
|
||||
}
|
||||
|
||||
member := router.Group("/api/member", h.userIdentity)
|
||||
{
|
||||
member.GET("invite/:id", h.getInvite)
|
||||
member.GET("invite/my", h.myInvites)
|
||||
member.POST("invite/accept/:id", h.accept)
|
||||
member.POST("invite", h.invite)
|
||||
member.POST("kick", h.kick)
|
||||
|
||||
}
|
||||
|
||||
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
return router
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"esproject"
|
||||
"fmt"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type ProjectSchema struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewProjectSchema(db *gorm.DB) *ProjectSchema {
|
||||
return &ProjectSchema{db: db}
|
||||
}
|
||||
|
||||
func (r ProjectSchema) CreateProject(owner int64, name string, tags []string) (*esproject.Project, error) {
|
||||
project := &esproject.Project{
|
||||
Name: name,
|
||||
OwnerId: owner,
|
||||
Tags: tags,
|
||||
Members: []int64{},
|
||||
}
|
||||
err := r.db.Create(project).Error
|
||||
fmt.Printf("Project created %d\n", project.Id)
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %s\n", err)
|
||||
}
|
||||
return project, err
|
||||
}
|
||||
|
||||
func (r ProjectSchema) SaveProject(project *esproject.Project) (int64, error) {
|
||||
err := r.db.Save(project).Error
|
||||
return project.Id, err
|
||||
}
|
||||
|
||||
func (r ProjectSchema) GetProject(id int64) (*esproject.Project, error) {
|
||||
project := esproject.Project{}
|
||||
err := r.db.Find(&project, "id = ?", id).Error
|
||||
if project.Id == -1 {
|
||||
err = fmt.Errorf("unknown account %d", id)
|
||||
}
|
||||
return &project, err
|
||||
}
|
||||
|
||||
func (r ProjectSchema) GetProjects(start, limit int) []int64 {
|
||||
var result []esproject.Project
|
||||
r.db.Select("id").Limit(limit).Offset(start).Find(&result)
|
||||
var ans = make([]int64, len(result))
|
||||
for i, res := range result {
|
||||
ans[i] = res.Id
|
||||
}
|
||||
return ans
|
||||
}
|
||||
|
||||
func (r ProjectSchema) GetProjectsCount() int64 {
|
||||
var count int64 = 0
|
||||
r.db.Model(&esproject.Project{}).Count(&count)
|
||||
return count
|
||||
}
|
||||
|
||||
func (r ProjectSchema) DeleteProject(id int64) error {
|
||||
project := esproject.Project{}
|
||||
err := r.db.Find(&project, "id = ?", id).Error
|
||||
if project.Id == 0 {
|
||||
err = fmt.Errorf("unknown project %d", id)
|
||||
}
|
||||
r.db.Delete(project)
|
||||
return err
|
||||
}
|
||||
Reference in new issue
Block a user