package app import ( "github.com/veypi/OneBD/rest" "oa/cfg" M "oa/models" ) func useRole(r rest.Router) { r.Delete("/:role_id", roleDelete) r.Get("/", roleList) r.Post("/", rolePost) r.Get("/:role_id", roleGet) r.Patch("/:role_id", rolePatch) } func roleDelete(x *rest.X) (any, error) { opts := &M.RoleDelete{} err := x.Parse(opts) if err != nil { return nil, err } data := &M.Role{} err = cfg.DB().Where("id = ?", opts.ID).Delete(data).Error return data, err } func roleList(x *rest.X) (any, error) { opts := &M.RoleList{} err := x.Parse(opts) if err != nil { return nil, err } data := make([]*M.Role, 0, 10) query := cfg.DB() if opts.AppID != nil { query = query.Where("app_id LIKE ?", opts.AppID) } if opts.Name != nil { query = query.Where("name LIKE ?", opts.Name) } err = query.Find(&data).Error return data, err } func rolePost(x *rest.X) (any, error) { opts := &M.RolePost{} err := x.Parse(opts) if err != nil { return nil, err } data := &M.Role{} data.AppID = opts.AppID data.Name = opts.Name data.Des = opts.Des err = cfg.DB().Create(data).Error return data, err } func roleGet(x *rest.X) (any, error) { opts := &M.RoleGet{} err := x.Parse(opts) if err != nil { return nil, err } data := &M.Role{} err = cfg.DB().Where("id = ?", opts.ID).First(data).Error return data, err } func rolePatch(x *rest.X) (any, error) { opts := &M.RolePatch{} err := x.Parse(opts) if err != nil { return nil, err } data := &M.Role{} err = cfg.DB().Where("id = ?", opts.ID).First(data).Error if err != nil { return nil, err } optsMap := make(map[string]interface{}) if opts.Name != nil { optsMap["name"] = opts.Name } if opts.Des != nil { optsMap["des"] = opts.Des } err = cfg.DB().Model(data).Updates(optsMap).Error return data, err }