initial
This commit is contained in:
commit
d6ff222741
11
Readme.md
Normal file
11
Readme.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# MutlitenantStack
|
||||||
|
|
||||||
|
This is a project to demonstrate multi tenancy usage in beego using postgres and seperated databases
|
||||||
|
|
||||||
|
The api was scaffolded using:
|
||||||
|
|
||||||
|
`bee api multitenantStack -driver=postgres -conn="host=127.0.0.1 port=5435 user=postgres password=postgre dbname=company_template sslmode=disable"`
|
||||||
|
|
||||||
|
then `bee run -downdoc=true``
|
||||||
|
|
||||||
|
To regenerate docs simply run `bee generate docs`
|
6
conf/app.conf
Normal file
6
conf/app.conf
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
appname = multitenantStack
|
||||||
|
httpport = 8080
|
||||||
|
runmode = dev
|
||||||
|
autorender = false
|
||||||
|
copyrequestbody = true
|
||||||
|
EnableDocs = true
|
171
controllers/company_data.go
Normal file
171
controllers/company_data.go
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"multitenantStack/models"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CompanyDataController operations for CompanyData
|
||||||
|
type CompanyDataController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
// URLMapping ...
|
||||||
|
func (c *CompanyDataController) URLMapping() {
|
||||||
|
c.Mapping("Post", c.Post)
|
||||||
|
c.Mapping("GetOne", c.GetOne)
|
||||||
|
c.Mapping("GetAll", c.GetAll)
|
||||||
|
c.Mapping("Put", c.Put)
|
||||||
|
c.Mapping("Delete", c.Delete)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Post ...
|
||||||
|
// @Title Post
|
||||||
|
// @Description create CompanyData
|
||||||
|
// @Param body body models.CompanyData true "body for CompanyData content"
|
||||||
|
// @Success 201 {int} models.CompanyData
|
||||||
|
// @Failure 403 body is empty
|
||||||
|
// @router / [post]
|
||||||
|
func (c *CompanyDataController) Post() {
|
||||||
|
var v models.CompanyData
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if _, err := models.AddCompanyData(&v); err == nil {
|
||||||
|
c.Ctx.Output.SetStatus(201)
|
||||||
|
c.Data["json"] = v
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOne ...
|
||||||
|
// @Title Get One
|
||||||
|
// @Description get CompanyData by id
|
||||||
|
// @Param id path string true "The key for staticblock"
|
||||||
|
// @Success 200 {object} models.CompanyData
|
||||||
|
// @Failure 403 :id is empty
|
||||||
|
// @router /:id [get]
|
||||||
|
func (c *CompanyDataController) GetOne() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v, err := models.GetCompanyDataById(id)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = v
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAll ...
|
||||||
|
// @Title Get All
|
||||||
|
// @Description get CompanyData
|
||||||
|
// @Param query query string false "Filter. e.g. col1:v1,col2:v2 ..."
|
||||||
|
// @Param fields query string false "Fields returned. e.g. col1,col2 ..."
|
||||||
|
// @Param sortby query string false "Sorted-by fields. e.g. col1,col2 ..."
|
||||||
|
// @Param order query string false "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ..."
|
||||||
|
// @Param limit query string false "Limit the size of result set. Must be an integer"
|
||||||
|
// @Param offset query string false "Start position of result set. Must be an integer"
|
||||||
|
// @Success 200 {object} models.CompanyData
|
||||||
|
// @Failure 403
|
||||||
|
// @router / [get]
|
||||||
|
func (c *CompanyDataController) GetAll() {
|
||||||
|
var fields []string
|
||||||
|
var sortby []string
|
||||||
|
var order []string
|
||||||
|
var query = make(map[string]string)
|
||||||
|
var limit int64 = 10
|
||||||
|
var offset int64
|
||||||
|
|
||||||
|
// fields: col1,col2,entity.col3
|
||||||
|
if v := c.GetString("fields"); v != "" {
|
||||||
|
fields = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// limit: 10 (default is 10)
|
||||||
|
if v, err := c.GetInt64("limit"); err == nil {
|
||||||
|
limit = v
|
||||||
|
}
|
||||||
|
// offset: 0 (default is 0)
|
||||||
|
if v, err := c.GetInt64("offset"); err == nil {
|
||||||
|
offset = v
|
||||||
|
}
|
||||||
|
// sortby: col1,col2
|
||||||
|
if v := c.GetString("sortby"); v != "" {
|
||||||
|
sortby = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// order: desc,asc
|
||||||
|
if v := c.GetString("order"); v != "" {
|
||||||
|
order = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// query: k:v,k:v
|
||||||
|
if v := c.GetString("query"); v != "" {
|
||||||
|
for _, cond := range strings.Split(v, ",") {
|
||||||
|
kv := strings.SplitN(cond, ":", 2)
|
||||||
|
if len(kv) != 2 {
|
||||||
|
c.Data["json"] = errors.New("Error: invalid query key/value pair")
|
||||||
|
c.ServeJSON()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
k, v := kv[0], kv[1]
|
||||||
|
query[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
l, err := models.GetAllCompanyData(query, fields, sortby, order, offset, limit)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = l
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put ...
|
||||||
|
// @Title Put
|
||||||
|
// @Description update the CompanyData
|
||||||
|
// @Param id path string true "The id you want to update"
|
||||||
|
// @Param body body models.CompanyData true "body for CompanyData content"
|
||||||
|
// @Success 200 {object} models.CompanyData
|
||||||
|
// @Failure 403 :id is not int
|
||||||
|
// @router /:id [put]
|
||||||
|
func (c *CompanyDataController) Put() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v := models.CompanyData{Id: id}
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if err := models.UpdateCompanyDataById(&v); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete ...
|
||||||
|
// @Title Delete
|
||||||
|
// @Description delete the CompanyData
|
||||||
|
// @Param id path string true "The id you want to delete"
|
||||||
|
// @Success 200 {string} delete success!
|
||||||
|
// @Failure 403 id is empty
|
||||||
|
// @router /:id [delete]
|
||||||
|
func (c *CompanyDataController) Delete() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
if err := models.DeleteCompanyData(id); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
171
controllers/company_user.go
Normal file
171
controllers/company_user.go
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"multitenantStack/models"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CompanyUserController operations for CompanyUser
|
||||||
|
type CompanyUserController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
// URLMapping ...
|
||||||
|
func (c *CompanyUserController) URLMapping() {
|
||||||
|
c.Mapping("Post", c.Post)
|
||||||
|
c.Mapping("GetOne", c.GetOne)
|
||||||
|
c.Mapping("GetAll", c.GetAll)
|
||||||
|
c.Mapping("Put", c.Put)
|
||||||
|
c.Mapping("Delete", c.Delete)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Post ...
|
||||||
|
// @Title Post
|
||||||
|
// @Description create CompanyUser
|
||||||
|
// @Param body body models.CompanyUser true "body for CompanyUser content"
|
||||||
|
// @Success 201 {int} models.CompanyUser
|
||||||
|
// @Failure 403 body is empty
|
||||||
|
// @router / [post]
|
||||||
|
func (c *CompanyUserController) Post() {
|
||||||
|
var v models.CompanyUser
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if _, err := models.AddCompanyUser(&v); err == nil {
|
||||||
|
c.Ctx.Output.SetStatus(201)
|
||||||
|
c.Data["json"] = v
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOne ...
|
||||||
|
// @Title Get One
|
||||||
|
// @Description get CompanyUser by id
|
||||||
|
// @Param id path string true "The key for staticblock"
|
||||||
|
// @Success 200 {object} models.CompanyUser
|
||||||
|
// @Failure 403 :id is empty
|
||||||
|
// @router /:id [get]
|
||||||
|
func (c *CompanyUserController) GetOne() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v, err := models.GetCompanyUserById(id)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = v
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAll ...
|
||||||
|
// @Title Get All
|
||||||
|
// @Description get CompanyUser
|
||||||
|
// @Param query query string false "Filter. e.g. col1:v1,col2:v2 ..."
|
||||||
|
// @Param fields query string false "Fields returned. e.g. col1,col2 ..."
|
||||||
|
// @Param sortby query string false "Sorted-by fields. e.g. col1,col2 ..."
|
||||||
|
// @Param order query string false "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ..."
|
||||||
|
// @Param limit query string false "Limit the size of result set. Must be an integer"
|
||||||
|
// @Param offset query string false "Start position of result set. Must be an integer"
|
||||||
|
// @Success 200 {object} models.CompanyUser
|
||||||
|
// @Failure 403
|
||||||
|
// @router / [get]
|
||||||
|
func (c *CompanyUserController) GetAll() {
|
||||||
|
var fields []string
|
||||||
|
var sortby []string
|
||||||
|
var order []string
|
||||||
|
var query = make(map[string]string)
|
||||||
|
var limit int64 = 10
|
||||||
|
var offset int64
|
||||||
|
|
||||||
|
// fields: col1,col2,entity.col3
|
||||||
|
if v := c.GetString("fields"); v != "" {
|
||||||
|
fields = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// limit: 10 (default is 10)
|
||||||
|
if v, err := c.GetInt64("limit"); err == nil {
|
||||||
|
limit = v
|
||||||
|
}
|
||||||
|
// offset: 0 (default is 0)
|
||||||
|
if v, err := c.GetInt64("offset"); err == nil {
|
||||||
|
offset = v
|
||||||
|
}
|
||||||
|
// sortby: col1,col2
|
||||||
|
if v := c.GetString("sortby"); v != "" {
|
||||||
|
sortby = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// order: desc,asc
|
||||||
|
if v := c.GetString("order"); v != "" {
|
||||||
|
order = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// query: k:v,k:v
|
||||||
|
if v := c.GetString("query"); v != "" {
|
||||||
|
for _, cond := range strings.Split(v, ",") {
|
||||||
|
kv := strings.SplitN(cond, ":", 2)
|
||||||
|
if len(kv) != 2 {
|
||||||
|
c.Data["json"] = errors.New("Error: invalid query key/value pair")
|
||||||
|
c.ServeJSON()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
k, v := kv[0], kv[1]
|
||||||
|
query[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
l, err := models.GetAllCompanyUser(query, fields, sortby, order, offset, limit)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = l
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put ...
|
||||||
|
// @Title Put
|
||||||
|
// @Description update the CompanyUser
|
||||||
|
// @Param id path string true "The id you want to update"
|
||||||
|
// @Param body body models.CompanyUser true "body for CompanyUser content"
|
||||||
|
// @Success 200 {object} models.CompanyUser
|
||||||
|
// @Failure 403 :id is not int
|
||||||
|
// @router /:id [put]
|
||||||
|
func (c *CompanyUserController) Put() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v := models.CompanyUser{Id: id}
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if err := models.UpdateCompanyUserById(&v); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete ...
|
||||||
|
// @Title Delete
|
||||||
|
// @Description delete the CompanyUser
|
||||||
|
// @Param id path string true "The id you want to delete"
|
||||||
|
// @Success 200 {string} delete success!
|
||||||
|
// @Failure 403 id is empty
|
||||||
|
// @router /:id [delete]
|
||||||
|
func (c *CompanyUserController) Delete() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
if err := models.DeleteCompanyUser(id); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
171
controllers/contact.go
Normal file
171
controllers/contact.go
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"multitenantStack/models"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ContactController operations for Contact
|
||||||
|
type ContactController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
// URLMapping ...
|
||||||
|
func (c *ContactController) URLMapping() {
|
||||||
|
c.Mapping("Post", c.Post)
|
||||||
|
c.Mapping("GetOne", c.GetOne)
|
||||||
|
c.Mapping("GetAll", c.GetAll)
|
||||||
|
c.Mapping("Put", c.Put)
|
||||||
|
c.Mapping("Delete", c.Delete)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Post ...
|
||||||
|
// @Title Post
|
||||||
|
// @Description create Contact
|
||||||
|
// @Param body body models.Contact true "body for Contact content"
|
||||||
|
// @Success 201 {int} models.Contact
|
||||||
|
// @Failure 403 body is empty
|
||||||
|
// @router / [post]
|
||||||
|
func (c *ContactController) Post() {
|
||||||
|
var v models.Contact
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if _, err := models.AddContact(&v); err == nil {
|
||||||
|
c.Ctx.Output.SetStatus(201)
|
||||||
|
c.Data["json"] = v
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOne ...
|
||||||
|
// @Title Get One
|
||||||
|
// @Description get Contact by id
|
||||||
|
// @Param id path string true "The key for staticblock"
|
||||||
|
// @Success 200 {object} models.Contact
|
||||||
|
// @Failure 403 :id is empty
|
||||||
|
// @router /:id [get]
|
||||||
|
func (c *ContactController) GetOne() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v, err := models.GetContactById(id)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = v
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAll ...
|
||||||
|
// @Title Get All
|
||||||
|
// @Description get Contact
|
||||||
|
// @Param query query string false "Filter. e.g. col1:v1,col2:v2 ..."
|
||||||
|
// @Param fields query string false "Fields returned. e.g. col1,col2 ..."
|
||||||
|
// @Param sortby query string false "Sorted-by fields. e.g. col1,col2 ..."
|
||||||
|
// @Param order query string false "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ..."
|
||||||
|
// @Param limit query string false "Limit the size of result set. Must be an integer"
|
||||||
|
// @Param offset query string false "Start position of result set. Must be an integer"
|
||||||
|
// @Success 200 {object} models.Contact
|
||||||
|
// @Failure 403
|
||||||
|
// @router / [get]
|
||||||
|
func (c *ContactController) GetAll() {
|
||||||
|
var fields []string
|
||||||
|
var sortby []string
|
||||||
|
var order []string
|
||||||
|
var query = make(map[string]string)
|
||||||
|
var limit int64 = 10
|
||||||
|
var offset int64
|
||||||
|
|
||||||
|
// fields: col1,col2,entity.col3
|
||||||
|
if v := c.GetString("fields"); v != "" {
|
||||||
|
fields = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// limit: 10 (default is 10)
|
||||||
|
if v, err := c.GetInt64("limit"); err == nil {
|
||||||
|
limit = v
|
||||||
|
}
|
||||||
|
// offset: 0 (default is 0)
|
||||||
|
if v, err := c.GetInt64("offset"); err == nil {
|
||||||
|
offset = v
|
||||||
|
}
|
||||||
|
// sortby: col1,col2
|
||||||
|
if v := c.GetString("sortby"); v != "" {
|
||||||
|
sortby = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// order: desc,asc
|
||||||
|
if v := c.GetString("order"); v != "" {
|
||||||
|
order = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// query: k:v,k:v
|
||||||
|
if v := c.GetString("query"); v != "" {
|
||||||
|
for _, cond := range strings.Split(v, ",") {
|
||||||
|
kv := strings.SplitN(cond, ":", 2)
|
||||||
|
if len(kv) != 2 {
|
||||||
|
c.Data["json"] = errors.New("Error: invalid query key/value pair")
|
||||||
|
c.ServeJSON()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
k, v := kv[0], kv[1]
|
||||||
|
query[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
l, err := models.GetAllContact(query, fields, sortby, order, offset, limit)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = l
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put ...
|
||||||
|
// @Title Put
|
||||||
|
// @Description update the Contact
|
||||||
|
// @Param id path string true "The id you want to update"
|
||||||
|
// @Param body body models.Contact true "body for Contact content"
|
||||||
|
// @Success 200 {object} models.Contact
|
||||||
|
// @Failure 403 :id is not int
|
||||||
|
// @router /:id [put]
|
||||||
|
func (c *ContactController) Put() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v := models.Contact{Id: id}
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if err := models.UpdateContactById(&v); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete ...
|
||||||
|
// @Title Delete
|
||||||
|
// @Description delete the Contact
|
||||||
|
// @Param id path string true "The id you want to delete"
|
||||||
|
// @Success 200 {string} delete success!
|
||||||
|
// @Failure 403 id is empty
|
||||||
|
// @router /:id [delete]
|
||||||
|
func (c *ContactController) Delete() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
if err := models.DeleteContact(id); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
171
controllers/post.go
Normal file
171
controllers/post.go
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"multitenantStack/models"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
// PostController operations for Post
|
||||||
|
type PostController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
// URLMapping ...
|
||||||
|
func (c *PostController) URLMapping() {
|
||||||
|
c.Mapping("Post", c.Post)
|
||||||
|
c.Mapping("GetOne", c.GetOne)
|
||||||
|
c.Mapping("GetAll", c.GetAll)
|
||||||
|
c.Mapping("Put", c.Put)
|
||||||
|
c.Mapping("Delete", c.Delete)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Post ...
|
||||||
|
// @Title Post
|
||||||
|
// @Description create Post
|
||||||
|
// @Param body body models.Post true "body for Post content"
|
||||||
|
// @Success 201 {int} models.Post
|
||||||
|
// @Failure 403 body is empty
|
||||||
|
// @router / [post]
|
||||||
|
func (c *PostController) Post() {
|
||||||
|
var v models.Post
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if _, err := models.AddPost(&v); err == nil {
|
||||||
|
c.Ctx.Output.SetStatus(201)
|
||||||
|
c.Data["json"] = v
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetOne ...
|
||||||
|
// @Title Get One
|
||||||
|
// @Description get Post by id
|
||||||
|
// @Param id path string true "The key for staticblock"
|
||||||
|
// @Success 200 {object} models.Post
|
||||||
|
// @Failure 403 :id is empty
|
||||||
|
// @router /:id [get]
|
||||||
|
func (c *PostController) GetOne() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v, err := models.GetPostById(id)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = v
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAll ...
|
||||||
|
// @Title Get All
|
||||||
|
// @Description get Post
|
||||||
|
// @Param query query string false "Filter. e.g. col1:v1,col2:v2 ..."
|
||||||
|
// @Param fields query string false "Fields returned. e.g. col1,col2 ..."
|
||||||
|
// @Param sortby query string false "Sorted-by fields. e.g. col1,col2 ..."
|
||||||
|
// @Param order query string false "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ..."
|
||||||
|
// @Param limit query string false "Limit the size of result set. Must be an integer"
|
||||||
|
// @Param offset query string false "Start position of result set. Must be an integer"
|
||||||
|
// @Success 200 {object} models.Post
|
||||||
|
// @Failure 403
|
||||||
|
// @router / [get]
|
||||||
|
func (c *PostController) GetAll() {
|
||||||
|
var fields []string
|
||||||
|
var sortby []string
|
||||||
|
var order []string
|
||||||
|
var query = make(map[string]string)
|
||||||
|
var limit int64 = 10
|
||||||
|
var offset int64
|
||||||
|
|
||||||
|
// fields: col1,col2,entity.col3
|
||||||
|
if v := c.GetString("fields"); v != "" {
|
||||||
|
fields = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// limit: 10 (default is 10)
|
||||||
|
if v, err := c.GetInt64("limit"); err == nil {
|
||||||
|
limit = v
|
||||||
|
}
|
||||||
|
// offset: 0 (default is 0)
|
||||||
|
if v, err := c.GetInt64("offset"); err == nil {
|
||||||
|
offset = v
|
||||||
|
}
|
||||||
|
// sortby: col1,col2
|
||||||
|
if v := c.GetString("sortby"); v != "" {
|
||||||
|
sortby = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// order: desc,asc
|
||||||
|
if v := c.GetString("order"); v != "" {
|
||||||
|
order = strings.Split(v, ",")
|
||||||
|
}
|
||||||
|
// query: k:v,k:v
|
||||||
|
if v := c.GetString("query"); v != "" {
|
||||||
|
for _, cond := range strings.Split(v, ",") {
|
||||||
|
kv := strings.SplitN(cond, ":", 2)
|
||||||
|
if len(kv) != 2 {
|
||||||
|
c.Data["json"] = errors.New("Error: invalid query key/value pair")
|
||||||
|
c.ServeJSON()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
k, v := kv[0], kv[1]
|
||||||
|
query[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
l, err := models.GetAllPost(query, fields, sortby, order, offset, limit)
|
||||||
|
if err != nil {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = l
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Put ...
|
||||||
|
// @Title Put
|
||||||
|
// @Description update the Post
|
||||||
|
// @Param id path string true "The id you want to update"
|
||||||
|
// @Param body body models.Post true "body for Post content"
|
||||||
|
// @Success 200 {object} models.Post
|
||||||
|
// @Failure 403 :id is not int
|
||||||
|
// @router /:id [put]
|
||||||
|
func (c *PostController) Put() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
v := models.Post{Id: id}
|
||||||
|
if err := json.Unmarshal(c.Ctx.Input.RequestBody, &v); err == nil {
|
||||||
|
if err := models.UpdatePostById(&v); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete ...
|
||||||
|
// @Title Delete
|
||||||
|
// @Description delete the Post
|
||||||
|
// @Param id path string true "The id you want to delete"
|
||||||
|
// @Success 200 {string} delete success!
|
||||||
|
// @Failure 403 id is empty
|
||||||
|
// @router /:id [delete]
|
||||||
|
func (c *PostController) Delete() {
|
||||||
|
idStr := c.Ctx.Input.Param(":id")
|
||||||
|
id, _ := strconv.Atoi(idStr)
|
||||||
|
if err := models.DeletePost(id); err == nil {
|
||||||
|
c.Data["json"] = "OK"
|
||||||
|
} else {
|
||||||
|
c.Data["json"] = err.Error()
|
||||||
|
}
|
||||||
|
c.ServeJSON()
|
||||||
|
}
|
21
main.go
Normal file
21
main.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "multitenantStack/routers"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
_ "github.com/lib/pq"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
orm.RegisterDataBase("default", "postgres", "host=127.0.0.1 port=5435 user=postgres password=postgre dbname=company_template sslmode=disable")
|
||||||
|
if beego.BConfig.RunMode == "dev" {
|
||||||
|
beego.BConfig.WebConfig.DirectoryIndex = true
|
||||||
|
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
beego.Run()
|
||||||
|
}
|
155
models/company_data.go
Normal file
155
models/company_data.go
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CompanyData struct {
|
||||||
|
Id int `orm:"column(id);pk"`
|
||||||
|
Key string `orm:"column(key)"`
|
||||||
|
Value string `orm:"column(value);null"`
|
||||||
|
Data string `orm:"column(data);null"`
|
||||||
|
Created time.Time `orm:"column(created);type(timestamp with time zone);auto_now_add"`
|
||||||
|
Modified time.Time `orm:"column(modified);type(timestamp with time zone);auto_now_add"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *CompanyData) TableName() string {
|
||||||
|
return "company_data"
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
orm.RegisterModel(new(CompanyData))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddCompanyData insert a new CompanyData into database and returns
|
||||||
|
// last inserted Id on success.
|
||||||
|
func AddCompanyData(m *CompanyData) (id int64, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
id, err = o.Insert(m)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCompanyDataById retrieves CompanyData by Id. Returns error if
|
||||||
|
// Id doesn't exist
|
||||||
|
func GetCompanyDataById(id int) (v *CompanyData, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v = &CompanyData{Id: id}
|
||||||
|
if err = o.Read(v); err == nil {
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllCompanyData retrieves all CompanyData matches certain condition. Returns empty list if
|
||||||
|
// no records exist
|
||||||
|
func GetAllCompanyData(query map[string]string, fields []string, sortby []string, order []string,
|
||||||
|
offset int64, limit int64) (ml []interface{}, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
qs := o.QueryTable(new(CompanyData))
|
||||||
|
// query k=v
|
||||||
|
for k, v := range query {
|
||||||
|
// rewrite dot-notation to Object__Attribute
|
||||||
|
k = strings.Replace(k, ".", "__", -1)
|
||||||
|
if strings.Contains(k, "isnull") {
|
||||||
|
qs = qs.Filter(k, (v == "true" || v == "1"))
|
||||||
|
} else {
|
||||||
|
qs = qs.Filter(k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// order by:
|
||||||
|
var sortFields []string
|
||||||
|
if len(sortby) != 0 {
|
||||||
|
if len(sortby) == len(order) {
|
||||||
|
// 1) for each sort field, there is an associated order
|
||||||
|
for i, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[i] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[i] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
} else if len(sortby) != len(order) && len(order) == 1 {
|
||||||
|
// 2) there is exactly one order, all the sorted fields will be sorted by this order
|
||||||
|
for _, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[0] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[0] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
} else if len(sortby) != len(order) && len(order) != 1 {
|
||||||
|
return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if len(order) != 0 {
|
||||||
|
return nil, errors.New("Error: unused 'order' fields")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var l []CompanyData
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
|
||||||
|
if len(fields) == 0 {
|
||||||
|
for _, v := range l {
|
||||||
|
ml = append(ml, v)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// trim unused fields
|
||||||
|
for _, v := range l {
|
||||||
|
m := make(map[string]interface{})
|
||||||
|
val := reflect.ValueOf(v)
|
||||||
|
for _, fname := range fields {
|
||||||
|
m[fname] = val.FieldByName(fname).Interface()
|
||||||
|
}
|
||||||
|
ml = append(ml, m)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ml, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateCompanyData updates CompanyData by Id and returns error if
|
||||||
|
// the record to be updated doesn't exist
|
||||||
|
func UpdateCompanyDataById(m *CompanyData) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := CompanyData{Id: m.Id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Update(m); err == nil {
|
||||||
|
fmt.Println("Number of records updated in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCompanyData deletes CompanyData by Id and returns error if
|
||||||
|
// the record to be deleted doesn't exist
|
||||||
|
func DeleteCompanyData(id int) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := CompanyData{Id: id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Delete(&CompanyData{Id: id}); err == nil {
|
||||||
|
fmt.Println("Number of records deleted in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
155
models/company_user.go
Normal file
155
models/company_user.go
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CompanyUser struct {
|
||||||
|
Id int `orm:"column(id);pk"`
|
||||||
|
Name string `orm:"column(name)"`
|
||||||
|
Role int16 `orm:"column(role)"`
|
||||||
|
Profile string `orm:"column(profile)"`
|
||||||
|
Created time.Time `orm:"column(created);type(timestamp with time zone);auto_now_add"`
|
||||||
|
Modified time.Time `orm:"column(modified);type(timestamp with time zone);auto_now_add"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *CompanyUser) TableName() string {
|
||||||
|
return "company_user"
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
orm.RegisterModel(new(CompanyUser))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddCompanyUser insert a new CompanyUser into database and returns
|
||||||
|
// last inserted Id on success.
|
||||||
|
func AddCompanyUser(m *CompanyUser) (id int64, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
id, err = o.Insert(m)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCompanyUserById retrieves CompanyUser by Id. Returns error if
|
||||||
|
// Id doesn't exist
|
||||||
|
func GetCompanyUserById(id int) (v *CompanyUser, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v = &CompanyUser{Id: id}
|
||||||
|
if err = o.Read(v); err == nil {
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllCompanyUser retrieves all CompanyUser matches certain condition. Returns empty list if
|
||||||
|
// no records exist
|
||||||
|
func GetAllCompanyUser(query map[string]string, fields []string, sortby []string, order []string,
|
||||||
|
offset int64, limit int64) (ml []interface{}, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
qs := o.QueryTable(new(CompanyUser))
|
||||||
|
// query k=v
|
||||||
|
for k, v := range query {
|
||||||
|
// rewrite dot-notation to Object__Attribute
|
||||||
|
k = strings.Replace(k, ".", "__", -1)
|
||||||
|
if strings.Contains(k, "isnull") {
|
||||||
|
qs = qs.Filter(k, (v == "true" || v == "1"))
|
||||||
|
} else {
|
||||||
|
qs = qs.Filter(k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// order by:
|
||||||
|
var sortFields []string
|
||||||
|
if len(sortby) != 0 {
|
||||||
|
if len(sortby) == len(order) {
|
||||||
|
// 1) for each sort field, there is an associated order
|
||||||
|
for i, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[i] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[i] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
} else if len(sortby) != len(order) && len(order) == 1 {
|
||||||
|
// 2) there is exactly one order, all the sorted fields will be sorted by this order
|
||||||
|
for _, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[0] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[0] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
} else if len(sortby) != len(order) && len(order) != 1 {
|
||||||
|
return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if len(order) != 0 {
|
||||||
|
return nil, errors.New("Error: unused 'order' fields")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var l []CompanyUser
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
|
||||||
|
if len(fields) == 0 {
|
||||||
|
for _, v := range l {
|
||||||
|
ml = append(ml, v)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// trim unused fields
|
||||||
|
for _, v := range l {
|
||||||
|
m := make(map[string]interface{})
|
||||||
|
val := reflect.ValueOf(v)
|
||||||
|
for _, fname := range fields {
|
||||||
|
m[fname] = val.FieldByName(fname).Interface()
|
||||||
|
}
|
||||||
|
ml = append(ml, m)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ml, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateCompanyUser updates CompanyUser by Id and returns error if
|
||||||
|
// the record to be updated doesn't exist
|
||||||
|
func UpdateCompanyUserById(m *CompanyUser) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := CompanyUser{Id: m.Id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Update(m); err == nil {
|
||||||
|
fmt.Println("Number of records updated in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCompanyUser deletes CompanyUser by Id and returns error if
|
||||||
|
// the record to be deleted doesn't exist
|
||||||
|
func DeleteCompanyUser(id int) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := CompanyUser{Id: id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Delete(&CompanyUser{Id: id}); err == nil {
|
||||||
|
fmt.Println("Number of records deleted in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
158
models/contact.go
Normal file
158
models/contact.go
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Contact struct {
|
||||||
|
Id int `orm:"column(id);pk"`
|
||||||
|
FirstName string `orm:"column(firstName);null"`
|
||||||
|
LastName string `orm:"column(lastName)"`
|
||||||
|
PhoneNumber string `orm:"column(phoneNumber);null"`
|
||||||
|
Email string `orm:"column(email);null"`
|
||||||
|
LastContact time.Time `orm:"column(lastContact);type(date);null"`
|
||||||
|
Meta string `orm:"column(meta)"`
|
||||||
|
Created time.Time `orm:"column(created);type(timestamp with time zone);auto_now_add"`
|
||||||
|
Modified time.Time `orm:"column(modified);type(timestamp with time zone);auto_now_add"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Contact) TableName() string {
|
||||||
|
return "contact"
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
orm.RegisterModel(new(Contact))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddContact insert a new Contact into database and returns
|
||||||
|
// last inserted Id on success.
|
||||||
|
func AddContact(m *Contact) (id int64, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
id, err = o.Insert(m)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetContactById retrieves Contact by Id. Returns error if
|
||||||
|
// Id doesn't exist
|
||||||
|
func GetContactById(id int) (v *Contact, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v = &Contact{Id: id}
|
||||||
|
if err = o.Read(v); err == nil {
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllContact retrieves all Contact matches certain condition. Returns empty list if
|
||||||
|
// no records exist
|
||||||
|
func GetAllContact(query map[string]string, fields []string, sortby []string, order []string,
|
||||||
|
offset int64, limit int64) (ml []interface{}, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
qs := o.QueryTable(new(Contact))
|
||||||
|
// query k=v
|
||||||
|
for k, v := range query {
|
||||||
|
// rewrite dot-notation to Object__Attribute
|
||||||
|
k = strings.Replace(k, ".", "__", -1)
|
||||||
|
if strings.Contains(k, "isnull") {
|
||||||
|
qs = qs.Filter(k, (v == "true" || v == "1"))
|
||||||
|
} else {
|
||||||
|
qs = qs.Filter(k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// order by:
|
||||||
|
var sortFields []string
|
||||||
|
if len(sortby) != 0 {
|
||||||
|
if len(sortby) == len(order) {
|
||||||
|
// 1) for each sort field, there is an associated order
|
||||||
|
for i, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[i] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[i] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
} else if len(sortby) != len(order) && len(order) == 1 {
|
||||||
|
// 2) there is exactly one order, all the sorted fields will be sorted by this order
|
||||||
|
for _, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[0] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[0] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
} else if len(sortby) != len(order) && len(order) != 1 {
|
||||||
|
return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if len(order) != 0 {
|
||||||
|
return nil, errors.New("Error: unused 'order' fields")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var l []Contact
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
|
||||||
|
if len(fields) == 0 {
|
||||||
|
for _, v := range l {
|
||||||
|
ml = append(ml, v)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// trim unused fields
|
||||||
|
for _, v := range l {
|
||||||
|
m := make(map[string]interface{})
|
||||||
|
val := reflect.ValueOf(v)
|
||||||
|
for _, fname := range fields {
|
||||||
|
m[fname] = val.FieldByName(fname).Interface()
|
||||||
|
}
|
||||||
|
ml = append(ml, m)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ml, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateContact updates Contact by Id and returns error if
|
||||||
|
// the record to be updated doesn't exist
|
||||||
|
func UpdateContactById(m *Contact) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := Contact{Id: m.Id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Update(m); err == nil {
|
||||||
|
fmt.Println("Number of records updated in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteContact deletes Contact by Id and returns error if
|
||||||
|
// the record to be deleted doesn't exist
|
||||||
|
func DeleteContact(id int) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := Contact{Id: id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Delete(&Contact{Id: id}); err == nil {
|
||||||
|
fmt.Println("Number of records deleted in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
155
models/post.go
Normal file
155
models/post.go
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Post struct {
|
||||||
|
Id int `orm:"column(id);pk"`
|
||||||
|
Name string `orm:"column(name);null"`
|
||||||
|
Data string `orm:"column(data)"`
|
||||||
|
Meta string `orm:"column(meta)"`
|
||||||
|
Created time.Time `orm:"column(created);type(timestamp with time zone);auto_now_add"`
|
||||||
|
Modified time.Time `orm:"column(modified);type(timestamp with time zone);auto_now_add"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Post) TableName() string {
|
||||||
|
return "post"
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
orm.RegisterModel(new(Post))
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddPost insert a new Post into database and returns
|
||||||
|
// last inserted Id on success.
|
||||||
|
func AddPost(m *Post) (id int64, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
id, err = o.Insert(m)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPostById retrieves Post by Id. Returns error if
|
||||||
|
// Id doesn't exist
|
||||||
|
func GetPostById(id int) (v *Post, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v = &Post{Id: id}
|
||||||
|
if err = o.Read(v); err == nil {
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllPost retrieves all Post matches certain condition. Returns empty list if
|
||||||
|
// no records exist
|
||||||
|
func GetAllPost(query map[string]string, fields []string, sortby []string, order []string,
|
||||||
|
offset int64, limit int64) (ml []interface{}, err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
qs := o.QueryTable(new(Post))
|
||||||
|
// query k=v
|
||||||
|
for k, v := range query {
|
||||||
|
// rewrite dot-notation to Object__Attribute
|
||||||
|
k = strings.Replace(k, ".", "__", -1)
|
||||||
|
if strings.Contains(k, "isnull") {
|
||||||
|
qs = qs.Filter(k, (v == "true" || v == "1"))
|
||||||
|
} else {
|
||||||
|
qs = qs.Filter(k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// order by:
|
||||||
|
var sortFields []string
|
||||||
|
if len(sortby) != 0 {
|
||||||
|
if len(sortby) == len(order) {
|
||||||
|
// 1) for each sort field, there is an associated order
|
||||||
|
for i, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[i] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[i] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
} else if len(sortby) != len(order) && len(order) == 1 {
|
||||||
|
// 2) there is exactly one order, all the sorted fields will be sorted by this order
|
||||||
|
for _, v := range sortby {
|
||||||
|
orderby := ""
|
||||||
|
if order[0] == "desc" {
|
||||||
|
orderby = "-" + v
|
||||||
|
} else if order[0] == "asc" {
|
||||||
|
orderby = v
|
||||||
|
} else {
|
||||||
|
return nil, errors.New("Error: Invalid order. Must be either [asc|desc]")
|
||||||
|
}
|
||||||
|
sortFields = append(sortFields, orderby)
|
||||||
|
}
|
||||||
|
} else if len(sortby) != len(order) && len(order) != 1 {
|
||||||
|
return nil, errors.New("Error: 'sortby', 'order' sizes mismatch or 'order' size is not 1")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if len(order) != 0 {
|
||||||
|
return nil, errors.New("Error: unused 'order' fields")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var l []Post
|
||||||
|
qs = qs.OrderBy(sortFields...)
|
||||||
|
if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil {
|
||||||
|
if len(fields) == 0 {
|
||||||
|
for _, v := range l {
|
||||||
|
ml = append(ml, v)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// trim unused fields
|
||||||
|
for _, v := range l {
|
||||||
|
m := make(map[string]interface{})
|
||||||
|
val := reflect.ValueOf(v)
|
||||||
|
for _, fname := range fields {
|
||||||
|
m[fname] = val.FieldByName(fname).Interface()
|
||||||
|
}
|
||||||
|
ml = append(ml, m)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ml, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatePost updates Post by Id and returns error if
|
||||||
|
// the record to be updated doesn't exist
|
||||||
|
func UpdatePostById(m *Post) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := Post{Id: m.Id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Update(m); err == nil {
|
||||||
|
fmt.Println("Number of records updated in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeletePost deletes Post by Id and returns error if
|
||||||
|
// the record to be deleted doesn't exist
|
||||||
|
func DeletePost(id int) (err error) {
|
||||||
|
o := orm.NewOrm()
|
||||||
|
v := Post{Id: id}
|
||||||
|
// ascertain id exists in the database
|
||||||
|
if err = o.Read(&v); err == nil {
|
||||||
|
var num int64
|
||||||
|
if num, err = o.Delete(&Post{Id: id}); err == nil {
|
||||||
|
fmt.Println("Number of records deleted in database:", num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
44
routers/router.go
Normal file
44
routers/router.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// @APIVersion 1.0.0
|
||||||
|
// @Title beego Test API
|
||||||
|
// @Description beego has a very cool tools to autogenerate documents for your API
|
||||||
|
// @Contact astaxie@gmail.com
|
||||||
|
// @TermsOfServiceUrl http://beego.me/
|
||||||
|
// @License Apache 2.0
|
||||||
|
// @LicenseUrl http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
package routers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"multitenantStack/controllers"
|
||||||
|
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
ns := beego.NewNamespace("/v1",
|
||||||
|
|
||||||
|
beego.NSNamespace("/contact",
|
||||||
|
beego.NSInclude(
|
||||||
|
&controllers.ContactController{},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
beego.NSNamespace("/company_data",
|
||||||
|
beego.NSInclude(
|
||||||
|
&controllers.CompanyDataController{},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
beego.NSNamespace("/post",
|
||||||
|
beego.NSInclude(
|
||||||
|
&controllers.PostController{},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
beego.NSNamespace("/company_user",
|
||||||
|
beego.NSInclude(
|
||||||
|
&controllers.CompanyUserController{},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
beego.AddNamespace(ns)
|
||||||
|
}
|
BIN
swagger/favicon-16x16.png
Normal file
BIN
swagger/favicon-16x16.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 445 B |
BIN
swagger/favicon-32x32.png
Normal file
BIN
swagger/favicon-32x32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
93
swagger/index.html
Normal file
93
swagger/index.html
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<!-- HTML for static distribution bundle build -->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Swagger UI</title>
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
|
||||||
|
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
|
||||||
|
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
|
||||||
|
<style>
|
||||||
|
html
|
||||||
|
{
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: -moz-scrollbars-vertical;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after
|
||||||
|
{
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin:0;
|
||||||
|
background: #fafafa;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0">
|
||||||
|
<defs>
|
||||||
|
<symbol viewBox="0 0 20 20" id="unlocked">
|
||||||
|
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="locked">
|
||||||
|
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="close">
|
||||||
|
<path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="large-arrow">
|
||||||
|
<path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 20 20" id="large-arrow-down">
|
||||||
|
<path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 24 24" id="jump-to">
|
||||||
|
<path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
<symbol viewBox="0 0 24 24" id="expand">
|
||||||
|
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
|
||||||
|
</symbol>
|
||||||
|
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<div id="swagger-ui"></div>
|
||||||
|
|
||||||
|
<script src="./swagger-ui-bundle.js"> </script>
|
||||||
|
<script src="./swagger-ui-standalone-preset.js"> </script>
|
||||||
|
<script>
|
||||||
|
window.onload = function() {
|
||||||
|
// Build a system
|
||||||
|
const ui = SwaggerUIBundle({
|
||||||
|
url: "swagger.json",
|
||||||
|
dom_id: '#swagger-ui',
|
||||||
|
presets: [
|
||||||
|
SwaggerUIBundle.presets.apis,
|
||||||
|
SwaggerUIStandalonePreset
|
||||||
|
],
|
||||||
|
plugins: [
|
||||||
|
SwaggerUIBundle.plugins.DownloadUrl
|
||||||
|
],
|
||||||
|
layout: "StandaloneLayout"
|
||||||
|
})
|
||||||
|
|
||||||
|
window.ui = ui
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
53
swagger/oauth2-redirect.html
Normal file
53
swagger/oauth2-redirect.html
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en-US">
|
||||||
|
<body onload="run()">
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
function run () {
|
||||||
|
var oauth2 = window.opener.swaggerUIRedirectOauth2;
|
||||||
|
var sentState = oauth2.state;
|
||||||
|
var isValid, qp, arr;
|
||||||
|
|
||||||
|
qp = (window.location.hash || location.search).substring(1);
|
||||||
|
|
||||||
|
arr = qp.split("&")
|
||||||
|
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';})
|
||||||
|
qp = qp ? JSON.parse('{' + arr.join() + '}',
|
||||||
|
function (key, value) {
|
||||||
|
return key === "" ? value : decodeURIComponent(value)
|
||||||
|
}
|
||||||
|
) : {}
|
||||||
|
|
||||||
|
isValid = qp.state === sentState
|
||||||
|
|
||||||
|
if (oauth2.auth.schema.get("flow") === "accessCode" && !oauth2.auth.code) {
|
||||||
|
if (!isValid) {
|
||||||
|
oauth2.errCb({
|
||||||
|
authId: oauth2.auth.name,
|
||||||
|
source: "auth",
|
||||||
|
level: "warning",
|
||||||
|
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qp.code) {
|
||||||
|
delete oauth2.state;
|
||||||
|
oauth2.auth.code = qp.code;
|
||||||
|
oauth2.callback(oauth2.auth);
|
||||||
|
} else {
|
||||||
|
oauth2.errCb({
|
||||||
|
authId: oauth2.auth.name,
|
||||||
|
source: "auth",
|
||||||
|
level: "error",
|
||||||
|
message: "Authorization failed: no accessCode received from the server"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid});
|
||||||
|
}
|
||||||
|
window.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
108
swagger/swagger-ui-bundle.js
Normal file
108
swagger/swagger-ui-bundle.js
Normal file
File diff suppressed because one or more lines are too long
1
swagger/swagger-ui-bundle.js.map
Normal file
1
swagger/swagger-ui-bundle.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"swagger-ui-bundle.js","sources":["webpack:///swagger-ui-bundle.js"],"mappings":"AAAA;AAu/FA;AA6+FA;;;;;;;;;;;;;;;;;;;;;;;;;;AAyTA;;;;;;AAoIA;AAi7FA;AAmtCA;AAi0IA;AA0oJA;AAgwFA;AAyrGA;AA0lFA;AA4nFA;AA+9CA;AA+gDA;AAwrCA;AA60EA;;;;;AA6oCA;AAsyJA;;;;;;;;;;;;;;AA64EA;AA4mIA;AAquJA;AA2qHA;AA2mGA;AAiiEA;AAq4DA;AAg3DA;AAoPA;;;;;;AAk7FA;AA07FA;;;;;AAi8CA;AAgsFA;AAs2CA;AAglCA;AAu9CA;AAy8EA;AAsiCA;AA+yFA;;;;;;;;;AAgkDA;AA2zIA;AAu7FA;AAmrFA;AAu0EA","sourceRoot":""}
|
20
swagger/swagger-ui-standalone-preset.js
Normal file
20
swagger/swagger-ui-standalone-preset.js
Normal file
File diff suppressed because one or more lines are too long
1
swagger/swagger-ui-standalone-preset.js.map
Normal file
1
swagger/swagger-ui-standalone-preset.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"swagger-ui-standalone-preset.js","sources":["webpack:///swagger-ui-standalone-preset.js"],"mappings":"AAAA;;;;;AA8QA;AAmvGA;AAuxFA;;;;;;AAocA;AAkvFA;AAu+CA;AAo+CA;AAgrCA;AAuyEA","sourceRoot":""}
|
2
swagger/swagger-ui.css
Normal file
2
swagger/swagger-ui.css
Normal file
File diff suppressed because one or more lines are too long
1
swagger/swagger-ui.css.map
Normal file
1
swagger/swagger-ui.css.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"swagger-ui.css","sources":[],"mappings":"","sourceRoot":""}
|
15
swagger/swagger-ui.js
Normal file
15
swagger/swagger-ui.js
Normal file
File diff suppressed because one or more lines are too long
1
swagger/swagger-ui.js.map
Normal file
1
swagger/swagger-ui.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"swagger-ui.js","sources":["webpack:///swagger-ui.js"],"mappings":"AAAA;;;;;;AA0yCA;AAoyHA;AAmyHA;AAykGA;AA+9BA;AA6iCA;AAojCA;AAu5BA","sourceRoot":""}
|
850
swagger/swagger.json
Normal file
850
swagger/swagger.json
Normal file
@ -0,0 +1,850 @@
|
|||||||
|
{
|
||||||
|
"swagger": "2.0",
|
||||||
|
"info": {
|
||||||
|
"title": "beego Test API",
|
||||||
|
"description": "beego has a very cool tools to autogenerate documents for your API",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"termsOfService": "http://beego.me/",
|
||||||
|
"contact": {
|
||||||
|
"email": "astaxie@gmail.com"
|
||||||
|
},
|
||||||
|
"license": {
|
||||||
|
"name": "Apache 2.0",
|
||||||
|
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"basePath": "/v1",
|
||||||
|
"paths": {
|
||||||
|
"/company_data/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"company_data"
|
||||||
|
],
|
||||||
|
"description": "get CompanyData",
|
||||||
|
"operationId": "CompanyDataController.Get All",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "query",
|
||||||
|
"description": "Filter. e.g. col1:v1,col2:v2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "fields",
|
||||||
|
"description": "Fields returned. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "sortby",
|
||||||
|
"description": "Sorted-by fields. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "order",
|
||||||
|
"description": "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "limit",
|
||||||
|
"description": "Limit the size of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "offset",
|
||||||
|
"description": "Start position of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyData"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"company_data"
|
||||||
|
],
|
||||||
|
"description": "create CompanyData",
|
||||||
|
"operationId": "CompanyDataController.Post",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for CompanyData content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyData"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "{int} models.CompanyData"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "body is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/company_data/{id}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"company_data"
|
||||||
|
],
|
||||||
|
"description": "get CompanyData by id",
|
||||||
|
"operationId": "CompanyDataController.Get One",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The key for staticblock",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyData"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"tags": [
|
||||||
|
"company_data"
|
||||||
|
],
|
||||||
|
"description": "update the CompanyData",
|
||||||
|
"operationId": "CompanyDataController.Put",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to update",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for CompanyData content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyData"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyData"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is not int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"tags": [
|
||||||
|
"company_data"
|
||||||
|
],
|
||||||
|
"description": "delete the CompanyData",
|
||||||
|
"operationId": "CompanyDataController.Delete",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to delete",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{string} delete success!"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/company_user/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"company_user"
|
||||||
|
],
|
||||||
|
"description": "get CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Get All",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "query",
|
||||||
|
"description": "Filter. e.g. col1:v1,col2:v2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "fields",
|
||||||
|
"description": "Fields returned. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "sortby",
|
||||||
|
"description": "Sorted-by fields. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "order",
|
||||||
|
"description": "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "limit",
|
||||||
|
"description": "Limit the size of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "offset",
|
||||||
|
"description": "Start position of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"company_user"
|
||||||
|
],
|
||||||
|
"description": "create CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Post",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for CompanyUser content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "{int} models.CompanyUser"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "body is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/company_user/{id}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"company_user"
|
||||||
|
],
|
||||||
|
"description": "get CompanyUser by id",
|
||||||
|
"operationId": "CompanyUserController.Get One",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The key for staticblock",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"tags": [
|
||||||
|
"company_user"
|
||||||
|
],
|
||||||
|
"description": "update the CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Put",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to update",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for CompanyUser content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.CompanyUser"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is not int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"tags": [
|
||||||
|
"company_user"
|
||||||
|
],
|
||||||
|
"description": "delete the CompanyUser",
|
||||||
|
"operationId": "CompanyUserController.Delete",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to delete",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{string} delete success!"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/contact/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"contact"
|
||||||
|
],
|
||||||
|
"description": "get Contact",
|
||||||
|
"operationId": "ContactController.Get All",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "query",
|
||||||
|
"description": "Filter. e.g. col1:v1,col2:v2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "fields",
|
||||||
|
"description": "Fields returned. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "sortby",
|
||||||
|
"description": "Sorted-by fields. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "order",
|
||||||
|
"description": "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "limit",
|
||||||
|
"description": "Limit the size of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "offset",
|
||||||
|
"description": "Start position of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Contact"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"contact"
|
||||||
|
],
|
||||||
|
"description": "create Contact",
|
||||||
|
"operationId": "ContactController.Post",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for Contact content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Contact"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "{int} models.Contact"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "body is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/contact/{id}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"contact"
|
||||||
|
],
|
||||||
|
"description": "get Contact by id",
|
||||||
|
"operationId": "ContactController.Get One",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The key for staticblock",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Contact"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"tags": [
|
||||||
|
"contact"
|
||||||
|
],
|
||||||
|
"description": "update the Contact",
|
||||||
|
"operationId": "ContactController.Put",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to update",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for Contact content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Contact"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Contact"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is not int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"tags": [
|
||||||
|
"contact"
|
||||||
|
],
|
||||||
|
"description": "delete the Contact",
|
||||||
|
"operationId": "ContactController.Delete",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to delete",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{string} delete success!"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/post/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"post"
|
||||||
|
],
|
||||||
|
"description": "get Post",
|
||||||
|
"operationId": "PostController.Get All",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "query",
|
||||||
|
"description": "Filter. e.g. col1:v1,col2:v2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "fields",
|
||||||
|
"description": "Fields returned. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "sortby",
|
||||||
|
"description": "Sorted-by fields. e.g. col1,col2 ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "order",
|
||||||
|
"description": "Order corresponding to each sortby field, if single value, apply to all sortby fields. e.g. desc,asc ...",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "limit",
|
||||||
|
"description": "Limit the size of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "query",
|
||||||
|
"name": "offset",
|
||||||
|
"description": "Start position of result set. Must be an integer",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Post"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"post"
|
||||||
|
],
|
||||||
|
"description": "create Post",
|
||||||
|
"operationId": "PostController.Post",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for Post content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Post"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "{int} models.Post"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "body is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/post/{id}": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"post"
|
||||||
|
],
|
||||||
|
"description": "get Post by id",
|
||||||
|
"operationId": "PostController.Get One",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The key for staticblock",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Post"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"tags": [
|
||||||
|
"post"
|
||||||
|
],
|
||||||
|
"description": "update the Post",
|
||||||
|
"operationId": "PostController.Put",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to update",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"in": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "body for Post content",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Post"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.Post"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": ":id is not int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"tags": [
|
||||||
|
"post"
|
||||||
|
],
|
||||||
|
"description": "delete the Post",
|
||||||
|
"operationId": "PostController.Delete",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"in": "path",
|
||||||
|
"name": "id",
|
||||||
|
"description": "The id you want to delete",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{string} delete success!"
|
||||||
|
},
|
||||||
|
"403": {
|
||||||
|
"description": "id is empty"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"definitions": {
|
||||||
|
"models.CompanyData": {
|
||||||
|
"title": "CompanyData",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Created": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"Data": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Id": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"Key": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Modified": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"Value": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.CompanyUser": {
|
||||||
|
"title": "CompanyUser",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Created": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"Id": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"Modified": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"Name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Profile": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Role": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int32"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.Contact": {
|
||||||
|
"title": "Contact",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Created": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"Email": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"FirstName": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Id": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"LastContact": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"LastName": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Meta": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Modified": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"PhoneNumber": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.Post": {
|
||||||
|
"title": "Post",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"Created": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"Data": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Id": {
|
||||||
|
"type": "integer",
|
||||||
|
"format": "int64"
|
||||||
|
},
|
||||||
|
"Meta": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Modified": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "datetime"
|
||||||
|
},
|
||||||
|
"Name": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": [
|
||||||
|
{
|
||||||
|
"name": "contact",
|
||||||
|
"description": "ContactController operations for Contact\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "company_data",
|
||||||
|
"description": "CompanyDataController operations for CompanyData\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "post",
|
||||||
|
"description": "PostController operations for Post\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "company_user",
|
||||||
|
"description": "CompanyUserController operations for CompanyUser\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
571
swagger/swagger.yml
Normal file
571
swagger/swagger.yml
Normal file
@ -0,0 +1,571 @@
|
|||||||
|
swagger: "2.0"
|
||||||
|
info:
|
||||||
|
title: beego Test API
|
||||||
|
description: beego has a very cool tools to autogenerate documents for your API
|
||||||
|
version: 1.0.0
|
||||||
|
termsOfService: http://beego.me/
|
||||||
|
contact:
|
||||||
|
email: astaxie@gmail.com
|
||||||
|
license:
|
||||||
|
name: Apache 2.0
|
||||||
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
basePath: /v1
|
||||||
|
paths:
|
||||||
|
/company_data/:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- company_data
|
||||||
|
description: get CompanyData
|
||||||
|
operationId: CompanyDataController.Get All
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: query
|
||||||
|
description: Filter. e.g. col1:v1,col2:v2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: fields
|
||||||
|
description: Fields returned. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: sortby
|
||||||
|
description: Sorted-by fields. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: order
|
||||||
|
description: Order corresponding to each sortby field, if single value, apply
|
||||||
|
to all sortby fields. e.g. desc,asc ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: limit
|
||||||
|
description: Limit the size of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: offset
|
||||||
|
description: Start position of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyData'
|
||||||
|
"403":
|
||||||
|
description: ""
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- company_data
|
||||||
|
description: create CompanyData
|
||||||
|
operationId: CompanyDataController.Post
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for CompanyData content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyData'
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: '{int} models.CompanyData'
|
||||||
|
"403":
|
||||||
|
description: body is empty
|
||||||
|
/company_data/{id}:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- company_data
|
||||||
|
description: get CompanyData by id
|
||||||
|
operationId: CompanyDataController.Get One
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The key for staticblock
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyData'
|
||||||
|
"403":
|
||||||
|
description: :id is empty
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- company_data
|
||||||
|
description: update the CompanyData
|
||||||
|
operationId: CompanyDataController.Put
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to update
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for CompanyData content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyData'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyData'
|
||||||
|
"403":
|
||||||
|
description: :id is not int
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- company_data
|
||||||
|
description: delete the CompanyData
|
||||||
|
operationId: CompanyDataController.Delete
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to delete
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{string} delete success!'
|
||||||
|
"403":
|
||||||
|
description: id is empty
|
||||||
|
/company_user/:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- company_user
|
||||||
|
description: get CompanyUser
|
||||||
|
operationId: CompanyUserController.Get All
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: query
|
||||||
|
description: Filter. e.g. col1:v1,col2:v2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: fields
|
||||||
|
description: Fields returned. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: sortby
|
||||||
|
description: Sorted-by fields. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: order
|
||||||
|
description: Order corresponding to each sortby field, if single value, apply
|
||||||
|
to all sortby fields. e.g. desc,asc ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: limit
|
||||||
|
description: Limit the size of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: offset
|
||||||
|
description: Start position of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: ""
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- company_user
|
||||||
|
description: create CompanyUser
|
||||||
|
operationId: CompanyUserController.Post
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for CompanyUser content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: '{int} models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: body is empty
|
||||||
|
/company_user/{id}:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- company_user
|
||||||
|
description: get CompanyUser by id
|
||||||
|
operationId: CompanyUserController.Get One
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The key for staticblock
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: :id is empty
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- company_user
|
||||||
|
description: update the CompanyUser
|
||||||
|
operationId: CompanyUserController.Put
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to update
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for CompanyUser content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.CompanyUser'
|
||||||
|
"403":
|
||||||
|
description: :id is not int
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- company_user
|
||||||
|
description: delete the CompanyUser
|
||||||
|
operationId: CompanyUserController.Delete
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to delete
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{string} delete success!'
|
||||||
|
"403":
|
||||||
|
description: id is empty
|
||||||
|
/contact/:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- contact
|
||||||
|
description: get Contact
|
||||||
|
operationId: ContactController.Get All
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: query
|
||||||
|
description: Filter. e.g. col1:v1,col2:v2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: fields
|
||||||
|
description: Fields returned. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: sortby
|
||||||
|
description: Sorted-by fields. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: order
|
||||||
|
description: Order corresponding to each sortby field, if single value, apply
|
||||||
|
to all sortby fields. e.g. desc,asc ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: limit
|
||||||
|
description: Limit the size of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: offset
|
||||||
|
description: Start position of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Contact'
|
||||||
|
"403":
|
||||||
|
description: ""
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- contact
|
||||||
|
description: create Contact
|
||||||
|
operationId: ContactController.Post
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for Contact content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Contact'
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: '{int} models.Contact'
|
||||||
|
"403":
|
||||||
|
description: body is empty
|
||||||
|
/contact/{id}:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- contact
|
||||||
|
description: get Contact by id
|
||||||
|
operationId: ContactController.Get One
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The key for staticblock
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Contact'
|
||||||
|
"403":
|
||||||
|
description: :id is empty
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- contact
|
||||||
|
description: update the Contact
|
||||||
|
operationId: ContactController.Put
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to update
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for Contact content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Contact'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Contact'
|
||||||
|
"403":
|
||||||
|
description: :id is not int
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- contact
|
||||||
|
description: delete the Contact
|
||||||
|
operationId: ContactController.Delete
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to delete
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{string} delete success!'
|
||||||
|
"403":
|
||||||
|
description: id is empty
|
||||||
|
/post/:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- post
|
||||||
|
description: get Post
|
||||||
|
operationId: PostController.Get All
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: query
|
||||||
|
description: Filter. e.g. col1:v1,col2:v2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: fields
|
||||||
|
description: Fields returned. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: sortby
|
||||||
|
description: Sorted-by fields. e.g. col1,col2 ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: order
|
||||||
|
description: Order corresponding to each sortby field, if single value, apply
|
||||||
|
to all sortby fields. e.g. desc,asc ...
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: limit
|
||||||
|
description: Limit the size of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: offset
|
||||||
|
description: Start position of result set. Must be an integer
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Post'
|
||||||
|
"403":
|
||||||
|
description: ""
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- post
|
||||||
|
description: create Post
|
||||||
|
operationId: PostController.Post
|
||||||
|
parameters:
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for Post content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Post'
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: '{int} models.Post'
|
||||||
|
"403":
|
||||||
|
description: body is empty
|
||||||
|
/post/{id}:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- post
|
||||||
|
description: get Post by id
|
||||||
|
operationId: PostController.Get One
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The key for staticblock
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Post'
|
||||||
|
"403":
|
||||||
|
description: :id is empty
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- post
|
||||||
|
description: update the Post
|
||||||
|
operationId: PostController.Put
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to update
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- in: body
|
||||||
|
name: body
|
||||||
|
description: body for Post content
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Post'
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: ""
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.Post'
|
||||||
|
"403":
|
||||||
|
description: :id is not int
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- post
|
||||||
|
description: delete the Post
|
||||||
|
operationId: PostController.Delete
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: id
|
||||||
|
description: The id you want to delete
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{string} delete success!'
|
||||||
|
"403":
|
||||||
|
description: id is empty
|
||||||
|
definitions:
|
||||||
|
models.CompanyData:
|
||||||
|
title: CompanyData
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
Created:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
Data:
|
||||||
|
type: string
|
||||||
|
Id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
Key:
|
||||||
|
type: string
|
||||||
|
Modified:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
Value:
|
||||||
|
type: string
|
||||||
|
models.CompanyUser:
|
||||||
|
title: CompanyUser
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
Created:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
Id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
Modified:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
Name:
|
||||||
|
type: string
|
||||||
|
Profile:
|
||||||
|
type: string
|
||||||
|
Role:
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
models.Contact:
|
||||||
|
title: Contact
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
Created:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
Email:
|
||||||
|
type: string
|
||||||
|
FirstName:
|
||||||
|
type: string
|
||||||
|
Id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
LastContact:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
LastName:
|
||||||
|
type: string
|
||||||
|
Meta:
|
||||||
|
type: string
|
||||||
|
Modified:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
PhoneNumber:
|
||||||
|
type: string
|
||||||
|
models.Post:
|
||||||
|
title: Post
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
Created:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
Data:
|
||||||
|
type: string
|
||||||
|
Id:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
Meta:
|
||||||
|
type: string
|
||||||
|
Modified:
|
||||||
|
type: string
|
||||||
|
format: datetime
|
||||||
|
Name:
|
||||||
|
type: string
|
||||||
|
tags:
|
||||||
|
- name: contact
|
||||||
|
description: |
|
||||||
|
ContactController operations for Contact
|
||||||
|
- name: company_data
|
||||||
|
description: |
|
||||||
|
CompanyDataController operations for CompanyData
|
||||||
|
- name: post
|
||||||
|
description: |
|
||||||
|
PostController operations for Post
|
||||||
|
- name: company_user
|
||||||
|
description: |
|
||||||
|
CompanyUserController operations for CompanyUser
|
Loading…
Reference in New Issue
Block a user