package entity_crud import ( "git.sxidc.com/go-framework/baize/binding" "git.sxidc.com/go-framework/baize/binding/request" "git.sxidc.com/go-framework/baize/binding/response" "git.sxidc.com/go-framework/baize/domain" ) func BindSimple[O any](binder *binding.Binder, crud *Simple[O]) { crud.bind(binder) } // Simple 实体CRUD的Bind参数 type Simple[O any] struct { // 使用的领域实体,注意是Entity类型 Entity domain.Entity // 表名 TableName string // 选择要使用的数据库Executor // DBExecutorOperations operations 数据库操作 // DBExecutorDataService data_service 数据服务 DBExecutorType string // URL领域相对路径,如/class,后面会自动补充 DomainPath string // 创建使用的DTO CreateDTO request.DTO // 删除使用的DTO,注意是WithID类型 DeleteDTO request.WithID // 更新使用的DTO,注意是WithID类型 UpdateDTO request.WithID // 查询使用的DTO,注意是Query类型 QueryDTO request.Query // 根据ID查询使用的DTO,注意是WithID类型 QueryByIDDTO request.WithID } func (crud *Simple[O]) bind(binder *binding.Binder) { dbExecutor := binder.ChooseDBExecutor(crud.DBExecutorType) // 创建班级 binding.PostBind(binder, &binding.SimpleBindItem[string]{ Path: crud.DomainPath + "/create", ResponseFunc: response.SendIDResponse[string], DTO: crud.CreateDTO, Objects: []domain.Object{crud.Entity}, ServiceFunc: CommonEntityCreate(crud.TableName, dbExecutor, nil), }) // 删除班级 binding.DeleteBind(binder, &binding.SimpleBindItem[any]{ Path: crud.DomainPath + "/:id/delete", ResponseFunc: response.SendMsgResponse, DTO: crud.DeleteDTO, Objects: []domain.Object{crud.Entity}, ServiceFunc: CommonEntityDelete(crud.TableName, dbExecutor, nil), }) // 修改班级 binding.PutBind(binder, &binding.SimpleBindItem[any]{ Path: crud.DomainPath + "/update", ResponseFunc: response.SendMsgResponse, DTO: crud.UpdateDTO, Objects: []domain.Object{crud.Entity}, ServiceFunc: CommonEntityUpdate(crud.TableName, dbExecutor, nil), }) // 查询班级 binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[O]]{ Path: crud.DomainPath + "/query", ResponseFunc: response.SendInfosResponse[O], DTO: crud.QueryDTO, Objects: []domain.Object{crud.Entity}, ServiceFunc: CommonEntityQuery[O](crud.TableName, dbExecutor, nil, nil), }) // 通过ID获取班级 binding.GetBind(binder, &binding.SimpleBindItem[O]{ Path: crud.DomainPath + "/get", ResponseFunc: response.SendInfoResponse[O], DTO: crud.QueryByIDDTO, Objects: []domain.Object{crud.Entity}, ServiceFunc: CommonEntityQueryByID[O](crud.TableName, dbExecutor, nil), }) }