mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
100 lines
2.3 KiB
Go
100 lines
2.3 KiB
Go
package controllers
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/core/errors"
|
|
"github.com/crawlab-team/crawlab/core/interfaces"
|
|
delegate2 "github.com/crawlab-team/crawlab/core/models/delegate"
|
|
"github.com/gin-gonic/gin"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
mongo2 "go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
func NewBasicControllerDelegate(id ControllerId, svc interfaces.ModelBaseService) (d *BasicControllerDelegate) {
|
|
return &BasicControllerDelegate{
|
|
id: id,
|
|
svc: svc,
|
|
}
|
|
}
|
|
|
|
type BasicControllerDelegate struct {
|
|
id ControllerId
|
|
svc interfaces.ModelBaseService
|
|
}
|
|
|
|
func (d *BasicControllerDelegate) Get(c *gin.Context) {
|
|
id, err := primitive.ObjectIDFromHex(c.Param("id"))
|
|
if err != nil {
|
|
HandleErrorBadRequest(c, err)
|
|
return
|
|
}
|
|
doc, err := d.svc.GetById(id)
|
|
if err == mongo2.ErrNoDocuments {
|
|
HandleErrorNotFound(c, err)
|
|
return
|
|
}
|
|
if err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
HandleSuccessWithData(c, doc)
|
|
}
|
|
|
|
func (d *BasicControllerDelegate) Post(c *gin.Context) {
|
|
doc, err := NewJsonBinder(d.id).Bind(c)
|
|
if err != nil {
|
|
HandleErrorBadRequest(c, err)
|
|
return
|
|
}
|
|
if err := delegate2.NewModelDelegate(doc, GetUserFromContext(c)).Add(); err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
HandleSuccessWithData(c, doc)
|
|
}
|
|
|
|
func (d *BasicControllerDelegate) Put(c *gin.Context) {
|
|
id, err := primitive.ObjectIDFromHex(c.Param("id"))
|
|
if err != nil {
|
|
HandleErrorBadRequest(c, err)
|
|
return
|
|
}
|
|
doc, err := NewJsonBinder(d.id).Bind(c)
|
|
if err != nil {
|
|
HandleErrorBadRequest(c, err)
|
|
return
|
|
}
|
|
if doc.GetId() != id {
|
|
HandleErrorBadRequest(c, errors.ErrorHttpBadRequest)
|
|
return
|
|
}
|
|
_, err = d.svc.GetById(id)
|
|
if err != nil {
|
|
HandleErrorNotFound(c, err)
|
|
return
|
|
}
|
|
if err := delegate2.NewModelDelegate(doc, GetUserFromContext(c)).Save(); err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
HandleSuccessWithData(c, doc)
|
|
}
|
|
|
|
func (d *BasicControllerDelegate) Delete(c *gin.Context) {
|
|
id := c.Param("id")
|
|
oid, err := primitive.ObjectIDFromHex(id)
|
|
if err != nil {
|
|
HandleErrorBadRequest(c, err)
|
|
return
|
|
}
|
|
doc, err := d.svc.GetById(oid)
|
|
if err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
if err := delegate2.NewModelDelegate(doc, GetUserFromContext(c)).Delete(); err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
HandleSuccess(c)
|
|
}
|