update go.mod, go.sum, handler.go, main.go, project_schema.go

This commit is contained in:
redtea committed 2024-10-24 12:00:00 +03:00
1 parent ec41b05a32
commit 9c20b1c03d
6 files changed
+678

No files matched your search

+60
View File
@@ -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
}
+71
View File
@@ -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
}