Added async support

This commit is contained in:
Peter Grlica
2021-08-16 08:12:52 +02:00
parent e0f6cc5553
commit d60823b8b5
25 changed files with 411 additions and 178 deletions
+3 -2
View File
@@ -1510,6 +1510,7 @@ endpoints:
entrypoint: apigwRoute
authentication: []
imports:
- github.com/cortezaproject/corteza-server/system/types
- github.com/cortezaproject/corteza-server/pkg/label
apis:
- name: list
@@ -1534,9 +1535,9 @@ endpoints:
post:
- { name: endpoint, type: string, required: true, title: "Route endpoint" }
- { name: method, type: string, title: "Route method" }
- { name: debug, type: bool, title: "Debug route" }
- { name: enabled, type: bool, title: "Is route enabled" }
- { name: group, type: uint64, title: "Route group" }
- { name: meta, type: "types.ApigwRouteMeta", title: "Route meta", parser: "types.ParseApigwRouteMeta" }
- name: update
method: PUT
title: Update route details
@@ -1546,9 +1547,9 @@ endpoints:
post:
- { name: endpoint, type: string, required: true, title: "Route endpoint" }
- { name: method, type: string, title: "Route method" }
- { name: debug, type: bool, title: "Debug route" }
- { name: enabled, type: bool, title: "Is route enabled" }
- { name: group, type: uint64, title: "Route group" }
- { name: meta, type: "types.ApigwRouteMeta", title: "Route meta", parser: "types.ParseApigwRouteMeta" }
- name: read
method: GET
title: Read route details
-2
View File
@@ -69,7 +69,6 @@ func (ctrl *ApigwRoute) Create(ctx context.Context, r *request.ApigwRouteCreate)
q = &types.ApigwRoute{
Endpoint: r.Endpoint,
Method: r.Method,
Debug: r.Debug,
Enabled: r.Enabled,
}
)
@@ -90,7 +89,6 @@ func (ctrl *ApigwRoute) Update(ctx context.Context, r *request.ApigwRouteUpdate)
ID: r.RouteID,
Endpoint: r.Endpoint,
Method: r.Method,
Debug: r.Debug,
Group: uint64(r.Group),
Enabled: r.Enabled,
}
+47 -36
View File
@@ -13,6 +13,7 @@ import (
"fmt"
"github.com/cortezaproject/corteza-server/pkg/label"
"github.com/cortezaproject/corteza-server/pkg/payload"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/go-chi/chi"
"io"
"mime/multipart"
@@ -87,11 +88,6 @@ type (
// Route method
Method string
// Debug POST parameter
//
// Debug route
Debug bool
// Enabled POST parameter
//
// Is route enabled
@@ -101,6 +97,11 @@ type (
//
// Route group
Group uint64 `json:",string"`
// Meta POST parameter
//
// Route meta
Meta types.ApigwRouteMeta
}
ApigwRouteUpdate struct {
@@ -119,11 +120,6 @@ type (
// Route method
Method string
// Debug POST parameter
//
// Debug route
Debug bool
// Enabled POST parameter
//
// Is route enabled
@@ -133,6 +129,11 @@ type (
//
// Route group
Group uint64 `json:",string"`
// Meta POST parameter
//
// Route meta
Meta types.ApigwRouteMeta
}
ApigwRouteRead struct {
@@ -296,9 +297,9 @@ func (r ApigwRouteCreate) Auditable() map[string]interface{} {
return map[string]interface{}{
"endpoint": r.Endpoint,
"method": r.Method,
"debug": r.Debug,
"enabled": r.Enabled,
"group": r.Group,
"meta": r.Meta,
}
}
@@ -312,11 +313,6 @@ func (r ApigwRouteCreate) GetMethod() string {
return r.Method
}
// Auditable returns all auditable/loggable parameters
func (r ApigwRouteCreate) GetDebug() bool {
return r.Debug
}
// Auditable returns all auditable/loggable parameters
func (r ApigwRouteCreate) GetEnabled() bool {
return r.Enabled
@@ -327,6 +323,11 @@ func (r ApigwRouteCreate) GetGroup() uint64 {
return r.Group
}
// Auditable returns all auditable/loggable parameters
func (r ApigwRouteCreate) GetMeta() types.ApigwRouteMeta {
return r.Meta
}
// Fill processes request and fills internal variables
func (r *ApigwRouteCreate) Fill(req *http.Request) (err error) {
@@ -362,13 +363,6 @@ func (r *ApigwRouteCreate) Fill(req *http.Request) (err error) {
}
}
if val, ok := req.Form["debug"]; ok && len(val) > 0 {
r.Debug, err = payload.ParseBool(val[0]), nil
if err != nil {
return err
}
}
if val, ok := req.Form["enabled"]; ok && len(val) > 0 {
r.Enabled, err = payload.ParseBool(val[0]), nil
if err != nil {
@@ -382,6 +376,18 @@ func (r *ApigwRouteCreate) Fill(req *http.Request) (err error) {
return err
}
}
if val, ok := req.Form["meta[]"]; ok {
r.Meta, err = types.ParseApigwRouteMeta(val)
if err != nil {
return err
}
} else if val, ok := req.Form["meta"]; ok {
r.Meta, err = types.ParseApigwRouteMeta(val)
if err != nil {
return err
}
}
}
return err
@@ -398,9 +404,9 @@ func (r ApigwRouteUpdate) Auditable() map[string]interface{} {
"routeID": r.RouteID,
"endpoint": r.Endpoint,
"method": r.Method,
"debug": r.Debug,
"enabled": r.Enabled,
"group": r.Group,
"meta": r.Meta,
}
}
@@ -419,11 +425,6 @@ func (r ApigwRouteUpdate) GetMethod() string {
return r.Method
}
// Auditable returns all auditable/loggable parameters
func (r ApigwRouteUpdate) GetDebug() bool {
return r.Debug
}
// Auditable returns all auditable/loggable parameters
func (r ApigwRouteUpdate) GetEnabled() bool {
return r.Enabled
@@ -434,6 +435,11 @@ func (r ApigwRouteUpdate) GetGroup() uint64 {
return r.Group
}
// Auditable returns all auditable/loggable parameters
func (r ApigwRouteUpdate) GetMeta() types.ApigwRouteMeta {
return r.Meta
}
// Fill processes request and fills internal variables
func (r *ApigwRouteUpdate) Fill(req *http.Request) (err error) {
@@ -469,13 +475,6 @@ func (r *ApigwRouteUpdate) Fill(req *http.Request) (err error) {
}
}
if val, ok := req.Form["debug"]; ok && len(val) > 0 {
r.Debug, err = payload.ParseBool(val[0]), nil
if err != nil {
return err
}
}
if val, ok := req.Form["enabled"]; ok && len(val) > 0 {
r.Enabled, err = payload.ParseBool(val[0]), nil
if err != nil {
@@ -489,6 +488,18 @@ func (r *ApigwRouteUpdate) Fill(req *http.Request) (err error) {
return err
}
}
if val, ok := req.Form["meta[]"]; ok {
r.Meta, err = types.ParseApigwRouteMeta(val)
if err != nil {
return err
}
} else if val, ok := req.Form["meta"]; ok {
r.Meta, err = types.ParseApigwRouteMeta(val)
if err != nil {
return err
}
}
}
{
+2 -1
View File
@@ -2,13 +2,14 @@ package service
import (
"context"
"time"
"github.com/cortezaproject/corteza-server/pkg/actionlog"
intAuth "github.com/cortezaproject/corteza-server/pkg/auth"
"github.com/cortezaproject/corteza-server/store"
"github.com/cortezaproject/corteza-server/system/types"
"github.com/getsentry/sentry-go"
"go.uber.org/zap"
"time"
)
type (
+33 -6
View File
@@ -1,19 +1,22 @@
package types
import (
"database/sql/driver"
"encoding/json"
"time"
"github.com/cortezaproject/corteza-server/pkg/filter"
"github.com/pkg/errors"
)
type (
ApigwRoute struct {
ID uint64 `json:"routeID,string"`
Endpoint string `json:"endpoint"`
Method string `json:"method"`
Debug bool `json:"debug"`
Enabled bool `json:"enabled"`
Group uint64 `json:"group,string"`
ID uint64 `json:"routeID,string"`
Endpoint string `json:"endpoint"`
Method string `json:"method"`
Enabled bool `json:"enabled"`
Group uint64 `json:"group,string"`
Meta ApigwRouteMeta `json:"meta"`
CreatedAt time.Time `json:"createdAt,omitempty"`
CreatedBy uint64 `json:"createdBy,string" `
@@ -23,6 +26,11 @@ type (
DeletedBy uint64 `json:"deletedBy,string,omitempty" `
}
ApigwRouteMeta struct {
Debug bool `json:"debug"`
Async bool `json:"async"`
}
ApigwRouteFilter struct {
Route string `json:"route"`
Group string `json:"group"`
@@ -40,3 +48,22 @@ type (
filter.Paging
}
)
func (cc *ApigwRouteMeta) Scan(value interface{}) error {
//lint:ignore S1034 This typecast is intentional, we need to get []byte out of a []uint8
switch value.(type) {
case nil:
*cc = ApigwRouteMeta{}
case []uint8:
b := value.([]byte)
if err := json.Unmarshal(b, cc); err != nil {
return errors.Wrapf(err, "cannot scan '%v' into ApigwRouteMeta", string(b))
}
}
return nil
}
func (cc ApigwRouteMeta) Value() (driver.Value, error) {
return json.Marshal(cc)
}
+5
View File
@@ -4,6 +4,11 @@ import (
"encoding/json"
)
func ParseApigwRouteMeta(ss []string) (p ApigwRouteMeta, err error) {
p = ApigwRouteMeta{}
return p, parseStringsInput(ss, p)
}
func ParseApigwfFilterParams(ss []string) (p ApigwFilterParams, err error) {
p = ApigwFilterParams{}
return p, parseStringsInput(ss, p)