From 7d3c88f0b2f1525407d8cc229649a287ed9b27b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Tue, 14 Nov 2023 13:19:23 +0100 Subject: [PATCH] Fix DAL model diff computation for record revisions and psql db * Fixed up type inconsistency. * Added some missing type fit matching. --- server/compose/record.cue | 2 +- server/compose/types/getters_setters.gen.go | 2 +- server/compose/types/record.go | 2 +- server/pkg/revisions/revisions.go | 9 +++++---- server/store/adapters/rdbms/drivers/postgres/dialect.go | 9 +++++++++ 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/server/compose/record.cue b/server/compose/record.cue index 66747d87a..129630d77 100644 --- a/server/compose/record.cue +++ b/server/compose/record.cue @@ -19,7 +19,7 @@ record: { attributes: { id: schema.IdField revision: { - goType: "uint" + goType: "int" dal: { type: "Number", meta: { "rdbms:type": "integer" }, default: 0 } } module_id: { diff --git a/server/compose/types/getters_setters.gen.go b/server/compose/types/getters_setters.gen.go index 1272e8211..79635f621 100644 --- a/server/compose/types/getters_setters.gen.go +++ b/server/compose/types/getters_setters.gen.go @@ -450,7 +450,7 @@ func (r *Record) SetValue(name string, pos uint, value any) (err error) { case "ownedBy", "OwnedBy", "owned_by": return cast2.Uint64(value, &r.OwnedBy) case "revision", "Revision": - return cast2.Uint(value, &r.Revision) + return cast2.Int(value, &r.Revision) case "updatedAt", "UpdatedAt": return cast2.TimePtr(value, &r.UpdatedAt) case "updatedBy", "UpdatedBy", "updated_by": diff --git a/server/compose/types/record.go b/server/compose/types/record.go index 89790a5f1..7b8c45877 100644 --- a/server/compose/types/record.go +++ b/server/compose/types/record.go @@ -46,7 +46,7 @@ type ( ID uint64 `json:"recordID,string"` ModuleID uint64 `json:"moduleID,string"` - Revision uint `json:"revision,omitempty"` + Revision int `json:"revision,omitempty"` module *Module diff --git a/server/pkg/revisions/revisions.go b/server/pkg/revisions/revisions.go index 080901883..96b88a348 100644 --- a/server/pkg/revisions/revisions.go +++ b/server/pkg/revisions/revisions.go @@ -3,11 +3,12 @@ package revisions import ( "encoding/json" "fmt" + "time" + "github.com/cortezaproject/corteza/server/pkg/cast2" "github.com/cortezaproject/corteza/server/pkg/dal" "github.com/cortezaproject/corteza/server/pkg/filter" "github.com/cortezaproject/corteza/server/pkg/id" - "time" ) type ( @@ -18,7 +19,7 @@ type ( ResourceID uint64 `json:"resourceID,string"` - Revision uint `json:"revision"` + Revision int `json:"revision"` Operation Operation `json:"operation"` UserID uint64 `json:"userID,string"` @@ -47,7 +48,7 @@ var ( } ) -func Make(op Operation, revision uint, resourceID, userID uint64) (rev *Revision) { +func Make(op Operation, revision int, resourceID, userID uint64) (rev *Revision) { return &Revision{ ID: id.Next(), Timestamp: now(), @@ -190,7 +191,7 @@ func (r *Revision) SetValue(name string, _ uint, value any) error { return cast2.Uint64(value, &r.ResourceID) case "revision": - return cast2.Uint(value, &r.Revision) + return cast2.Int(value, &r.Revision) case "operation": return cast2.String(value, &r.Operation) diff --git a/server/store/adapters/rdbms/drivers/postgres/dialect.go b/server/store/adapters/rdbms/drivers/postgres/dialect.go index 340adda3f..013dcd848 100644 --- a/server/store/adapters/rdbms/drivers/postgres/dialect.go +++ b/server/store/adapters/rdbms/drivers/postgres/dialect.go @@ -229,6 +229,15 @@ func (postgresDialect) ColumnFits(target, assert *ddl.Column) bool { "numeric": { "text": true, "varchar": true, + "bigint": true, + // @note this isn't entirely correct, but record revision lapsus made us + "integer": true, + }, + "integer": { + "text": true, + "varchar": true, + "bigint": true, + "numeric": true, }, "timestamp": { "text": true,