3
0

Add support for meta data on attribute types (rdbms:type=integer)

This commit is contained in:
Denis Arh
2022-09-09 16:27:13 +02:00
parent 6939d9e226
commit 44ba447678
20 changed files with 46 additions and 29 deletions
+3 -3
View File
@@ -42,7 +42,7 @@ resources: { [key=_]: {"handle": key, "component": "system", "platform": "cortez
}
access: {
goType: "types.Access"
dal: { type: "Number" }
dal: { type: "Number", meta: { "rdbms:type": "integer" } }
}
}
@@ -271,7 +271,7 @@ resources: { [key=_]: {"handle": key, "component": "system", "platform": "cortez
}
severity: {
goType: "types.Severity"
dal: { type: "Number", default: 0 }
dal: { type: "Number", default: 0, meta: { "rdbms:type": "integer" } }
}
description: {
dal: {}
@@ -351,7 +351,7 @@ resources: { [key=_]: {"handle": key, "component": "system", "platform": "cortez
goType: "uint64",
ident: "resourceID",
storeIdent: "rel_resource"
dal: { type: "Number" }
dal: { type: "ID" }
}
meta: {
goType: "rawJson"
+2 -2
View File
@@ -37,7 +37,7 @@ var Session = &dal.Model{
Ident: "Status", Sortable: true,
Type: &dal.TypeNumber{HasDefault: true,
DefaultValue: 0,
Precision: -1, Scale: -1,
Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"},
},
Store: &dal.CodecAlias{Ident: "status"},
},
@@ -408,7 +408,7 @@ var Workflow = &dal.Model{
Ident: "KeepSessions",
Type: &dal.TypeNumber{HasDefault: true,
DefaultValue: 0,
Precision: -1, Scale: -1,
Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"},
},
Store: &dal.CodecAlias{Ident: "keep_sessions"},
},
+1 -1
View File
@@ -23,7 +23,7 @@ session: {
status: {
sortable: true,
goType: "types.SessionStatus"
dal: { type: "Number", default: 0 }
dal: { type: "Number", default: 0, meta: { "rdbms:type": "integer" } }
}
event_type: {
sortable: true,
+1 -1
View File
@@ -25,7 +25,7 @@ workflow: {
}
keep_sessions: {
goType: "int"
dal: { type: "Number", default: 0 }
dal: { type: "Number", default: 0, meta: { "rdbms:type": "integer" } }
}
scope: {
goType: "*expr.Vars"
@@ -38,6 +38,7 @@ var {{ .var }} = &dal.Model{
{{- if .dal.precision }} Precision: {{ .dal.precision }}, {{ end }}
{{- if .dal.scale }} Scale: {{ .dal.scale }}, {{ end }}
{{- if .dal.length }} Length: {{ .dal.length }}, {{ end }}
{{- if .dal.meta }} Meta: {{ printf "%#v" .dal.meta }}, {{ end }}
{{- if eq .dal.type "Ref" }}
RefAttribute: {{ printf "%q" .dal.attribute }},
RefModel: &dal.ModelRef{
+1 -1
View File
@@ -65,7 +65,6 @@ import (
nullable: bool | *false
if type == "ID" {
generatedByStore: bool | *false
default?: 0
@@ -97,6 +96,7 @@ import (
precision: number | *(-1)
scale: number | *(-1)
default?: number
meta?: { [string]: _ }
}
if type == "Text" {
+4
View File
@@ -29,6 +29,10 @@ _dalModelFn: {
if attr.dal.default != _|_ {
"quotedDefault": attr.dal.type == "String"
}
if attr.dal.meta != _|_ {
"meta": attr.dal.meta
}
}
}
]
+3 -3
View File
@@ -358,7 +358,7 @@ var ModuleField = &dal.Model{
&dal.Attribute{
Ident: "Place", Sortable: true,
Type: &dal.TypeNumber{Precision: -1, Scale: -1},
Type: &dal.TypeNumber{Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"}},
Store: &dal.CodecAlias{Ident: "place"},
},
@@ -656,7 +656,7 @@ var Page = &dal.Model{
Ident: "Weight", Sortable: true,
Type: &dal.TypeNumber{HasDefault: true,
DefaultValue: 0,
Precision: -1, Scale: -1,
Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"},
},
Store: &dal.CodecAlias{Ident: "weight"},
},
@@ -765,7 +765,7 @@ var Record = &dal.Model{
&dal.Attribute{
Ident: "Revision",
Type: &dal.TypeNumber{Precision: -1, Scale: -1},
Type: &dal.TypeNumber{Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"}},
Store: &dal.CodecAlias{Ident: "revision"},
},
+1 -1
View File
@@ -23,7 +23,7 @@ moduleField: {
place: {
sortable: true,
goType: "int"
dal: { type: "Number" }
dal: { type: "Number", meta: { "rdbms:type": "integer" } }
}
kind: {
sortable: true,
+1 -1
View File
@@ -55,7 +55,7 @@ page: {
}
weight: {
goType: "int", sortable: true
dal: { type: "Number", default: 0 }
dal: { type: "Number", default: 0, meta: { "rdbms:type": "integer" } }
}
description: {
goType: "string"
+1 -1
View File
@@ -17,7 +17,7 @@ record: {
id: schema.IdField
revision: {
goType: "uint"
dal: { type: "Number" }
dal: { type: "Number", meta: { "rdbms:type": "integer" } }
}
module_id: {
ident: "moduleID",
+1 -1
View File
@@ -18,7 +18,7 @@ record_revision: {
}
revision: {
goType: "uint"
dal: { type: "Number" }
dal: { type: "Number", meta: { "rdbms:type": "integer" } }
}
operation: {
dal: {}
+3 -1
View File
@@ -91,6 +91,7 @@ type (
HasDefault bool
DefaultValue float64
Meta map[string]any
}
// TypeText handles string coding
@@ -151,9 +152,10 @@ type (
}
TypeUUID struct {
//
Nullable bool
}
TypeNumberStoreNativeType string
)
const (
@@ -9,6 +9,7 @@ import (
"github.com/doug-martin/goqu/v9"
"github.com/doug-martin/goqu/v9/dialect/postgres"
"github.com/doug-martin/goqu/v9/exp"
"github.com/spf13/cast"
)
type (
@@ -143,6 +144,12 @@ func (postgresDialect) AttributeToColumn(attr *dal.Attribute) (col *ddl.Column,
col.Default = ddl.DefaultValueCurrentTimestamp(t.DefaultCurrentTimestamp)
case *dal.TypeNumber:
if numType := cast.ToString(t.Meta["rdbms:type"]); numType != "" {
col.Type.Name = numType
col.Default = ddl.DefaultNumber(t.HasDefault, 0, t.DefaultValue)
break
}
col.Type.Name = "NUMERIC"
switch {
+4 -2
View File
@@ -16,8 +16,10 @@ apigw_filter: {
sortable: true, goType: "uint64", storeIdent: "rel_route"
dal: { type: "Ref", refModelResType: "corteza::system:apigw-route" }
}
weight: { sortable: true, goType: "uint64"
dal: { type: "Number" }
weight: {
sortable: true,
goType: "uint64"
dal: { type: "Number", meta: { "rdbms:type": "integer" } }
}
kind: {
sortable: true
+1 -1
View File
@@ -20,7 +20,7 @@ application: {
weight: {
goType: "int",
sortable: true
dal: { type: "Number", default: 0 }
dal: { type: "Number", default: 0, meta: { "rdbms:type": "integer" } }
}
unify: {
goType: "*types.ApplicationUnify"
+3 -2
View File
@@ -10,8 +10,9 @@ dal_sensitivity_level: {
id: schema.IdField
handle: schema.HandleField
level: {
sortable: true, goType: "int"
dal: { type: "Number" }
sortable: true,
goType: "int"
dal: { type: "Number", meta: { "rdbms:type": "integer" } }
}
meta: {
+3 -3
View File
@@ -83,7 +83,7 @@ var Action = &dal.Model{
Ident: "Severity",
Type: &dal.TypeNumber{HasDefault: true,
DefaultValue: 0,
Precision: -1, Scale: -1,
Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"},
},
Store: &dal.CodecAlias{Ident: "severity"},
},
@@ -315,7 +315,7 @@ var ResourceActivity = &dal.Model{
&dal.Attribute{
Ident: "ResourceID",
Type: &dal.TypeNumber{Precision: -1, Scale: -1},
Type: &dal.TypeID{},
Store: &dal.CodecAlias{Ident: "rel_resource"},
},
@@ -383,7 +383,7 @@ var Rule = &dal.Model{
&dal.Attribute{
Ident: "Access",
Type: &dal.TypeNumber{Precision: -1, Scale: -1},
Type: &dal.TypeNumber{Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"}},
Store: &dal.CodecAlias{Ident: "access"},
},
},
+4 -4
View File
@@ -35,7 +35,7 @@ var ApigwFilter = &dal.Model{
&dal.Attribute{
Ident: "Weight", Sortable: true,
Type: &dal.TypeNumber{Precision: -1, Scale: -1},
Type: &dal.TypeNumber{Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"}},
Store: &dal.CodecAlias{Ident: "weight"},
},
@@ -290,7 +290,7 @@ var Application = &dal.Model{
Ident: "Weight", Sortable: true,
Type: &dal.TypeNumber{HasDefault: true,
DefaultValue: 0,
Precision: -1, Scale: -1,
Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"},
},
Store: &dal.CodecAlias{Ident: "weight"},
},
@@ -1136,7 +1136,7 @@ var DalSensitivityLevel = &dal.Model{
&dal.Attribute{
Ident: "Level", Sortable: true,
Type: &dal.TypeNumber{Precision: -1, Scale: -1},
Type: &dal.TypeNumber{Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"}},
Store: &dal.CodecAlias{Ident: "level"},
},
@@ -1643,7 +1643,7 @@ var Reminder = &dal.Model{
&dal.Attribute{
Ident: "SnoozeCount",
Type: &dal.TypeNumber{Precision: -1, Scale: -1},
Type: &dal.TypeNumber{Precision: -1, Scale: -1, Meta: map[string]interface{}{"rdbms:type": "integer"}},
Store: &dal.CodecAlias{Ident: "snooze_count"},
},
+1 -1
View File
@@ -22,7 +22,7 @@ reminder: {
}
snooze_count: {
goType: "uint"
dal: { type: "Number" }
dal: { type: "Number", meta: { "rdbms:type": "integer" } }
}
assigned_to: schema.AttributeUserRef
assigned_by: schema.AttributeUserRef