Lumos is a collection of library, wrapper and standard library to build a service in Dimall Backend Project.
Main Feature :
- Routing
- Data Query
import web "github.com/dimall-id/lumos/http"
import "net/http"
func Routes () {
err := web.AddRoute(http.Route{
Name: "List of Product",
HttpMethod: "GET",
Url: "/products",
Roles: []string{
"USER",
},
Func: ListOfProductHandler,
}
)
if err != nil {
log.Fatal(err)
}
}
func ListOfProductHandler (r *http.Request) (interface{},web.HttpError) {
return nil,web.HttpError{}
}
import web "github.com/dimall-id/lumos/http"
func main() {
Routes()
log.Fatal(web.StartHttpServer(":8080"))
}
- Date Query
format : field=[gt|gte|eq|neq:mm-dd-yyyy,lt|lte:mm-dd-yyyy]
example :
- date=[gt:01-20-2020,lt:01-22-2020]
- date=[eq:01-20-2020]
- Numeric Query
format : field=[gt|gte|eq|neq:0-9,lt|lte:0-9]
example :
- price=[gt:1000,lte:10000]
- price=[neq:100000]
- List Query
format : field=[in|nin:value,value,...]
example :
- id=[in:1,2,3,4]
- id=[nin:1,2,3,4]
- Order Query
format : order=[field:asc|desc,field:asc|desc,...]
example :
- order=[name:asc,price:desc]
- Paging Query
format : paging=[page:0-9,per_page:0-9]
example :
- paging=[page:1,per_page:10]
- With Query
format : with=[with:relation,relation,...]
example :
- with=[with:ProductImage,ProductCategories]
- Select Query
format : select=[select:field,field,field,...]
example :
- select=[select:id,name,price]
- String Query
format : field=[eq|neq|like|ilike:value]
example
- name=[eq:Product A]
- name=[neq:Product B]
- name=[like:Produc]
- name=[ilike:Product]
import "gorm.io/gorm"
import "github.com/dimall-id/lumos/data"
func ListOfProductHandler (r *http.Request) (interface{},web.HttpError) {
tx := db.Open(...)
tx.Model(Product)
Q = data.New(tx)
var data []Product
response := Q.BuildResponse(r, &data)
return response, http.HttpError{}
}