fix: Rebuild foreign key and unique projection from authored facts (#115)

This commit is contained in:
Marcelo Mendonça Soares 2026-09-04 15:37:09 -03:00 • committed by GitHub
commit 519a8efca0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 49203 additions and 3053 deletions

View file

@ -0,0 +1,123 @@
{
"__className__": "serverpod.DatabaseMigration",
"actions": [
{
"__className__": "serverpod.DatabaseMigrationAction",
"type": "deleteTable",
"deleteTable": "crdt_schema_columns"
},
{
"__className__": "serverpod.DatabaseMigrationAction",
"type": "createTable",
"createTable": {
"__className__": "serverpod.TableDefinition",
"name": "crdt_schema_columns",
"dartName": "CrdtSchemaColumn",
"module": "serverpod_offline_sync",
"schema": "public",
"columns": [
{
"__className__": "serverpod.ColumnDefinition",
"name": "id",
"fieldName": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "serial",
"dartType": "int?"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "tblId",
"fieldName": "tblId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "name",
"fieldName": "name",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "columnType",
"fieldName": "columnType",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "dartType",
"fieldName": "dartType",
"columnType": 0,
"isNullable": false,
"dartType": "String"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "isNullable",
"fieldName": "isNullable",
"columnType": 1,
"isNullable": false,
"dartType": "bool"
}
],
"foreignKeys": [
{
"__className__": "serverpod.ForeignKeyDefinition",
"constraintName": "crdt_schema_columns_fk_0",
"columns": [
"tblId"
],
"referenceTable": "crdt_schema_tables",
"referenceTableSchema": "public",
"referenceColumns": [
"id"
],
"onUpdate": 3,
"onDelete": 4
}
],
"indexes": [
{
"__className__": "serverpod.IndexDefinition",
"indexName": "crdt_schema_columns_table_column_idx",
"elements": [
{
"__className__": "serverpod.IndexElementDefinition",
"type": 0,
"definition": "tblId"
},
{
"__className__": "serverpod.IndexElementDefinition",
"type": 0,
"definition": "name"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": false
}
],
"managed": true
}
}
],
"warnings": [
{
"__className__": "serverpod.DatabaseMigrationWarning",
"type": "tableDropped",
"message": "One or more columns are added to table \"crdt_schema_columns\" which cannot be added in a table migration. The complete table will be deleted and recreated.",
"table": "crdt_schema_columns",
"columns": [
"columnType"
],
"destrucive": true
}
],
"migrationApiVersion": 1
}

View file

@ -0,0 +1,100 @@
{
"__className__": "serverpod.DatabaseMigration",
"actions": [
{
"__className__": "serverpod.DatabaseMigrationAction",
"type": "deleteTable",
"deleteTable": "crdt_data_foreign_key"
},
{
"__className__": "serverpod.DatabaseMigrationAction",
"type": "createTable",
"createTable": {
"__className__": "serverpod.TableDefinition",
"name": "crdt_data_attempted_value",
"dartName": "CrdtDataAttemptedValue",
"module": "serverpod_offline_sync",
"schema": "public",
"columns": [
{
"__className__": "serverpod.ColumnDefinition",
"name": "id",
"fieldName": "id",
"columnType": 6,
"isNullable": false,
"columnDefault": "serial",
"dartType": "int?"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "fieldId",
"fieldName": "fieldId",
"columnType": 6,
"isNullable": false,
"dartType": "int"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "value",
"fieldName": "value",
"columnType": 14,
"isNullable": false,
"dartType": "dynamic"
},
{
"__className__": "serverpod.ColumnDefinition",
"name": "projectionReason",
"fieldName": "projectionReason",
"columnType": 6,
"isNullable": false,
"dartType": "serverpod_offline_sync:CrdtProjectionReason"
}
],
"foreignKeys": [
{
"__className__": "serverpod.ForeignKeyDefinition",
"constraintName": "crdt_data_attempted_value_fk_0",
"columns": [
"fieldId"
],
"referenceTable": "crdt_data_fields",
"referenceTableSchema": "public",
"referenceColumns": [
"id"
],
"onUpdate": 3,
"onDelete": 4
}
],
"indexes": [
{
"__className__": "serverpod.IndexDefinition",
"indexName": "crdt_data_attempted_value__fieldId__unique_idx",
"elements": [
{
"__className__": "serverpod.IndexElementDefinition",
"type": 0,
"definition": "fieldId"
}
],
"type": "btree",
"isUnique": true,
"isPrimary": false
}
],
"managed": true
}
}
],
"warnings": [
{
"__className__": "serverpod.DatabaseMigrationWarning",
"type": "tableDropped",
"message": "Table \"crdt_data_foreign_key\" will be dropped.",
"table": "crdt_data_foreign_key",
"columns": [],
"destrucive": true
}
],
"migrationApiVersion": 1
}

View file

@ -8,6 +8,8 @@ part '20260703114649226/migration.dart';
part '20260824213459360/migration.dart';
part '20260831202219662/migration.dart';
part '20260901174859443/migration.dart';
part '20260902184218563/migration.dart';
part '20260902195734685/migration.dart';
/// Migration registry for the client-side database.
class MigrationRegistry {
@ -18,6 +20,8 @@ class MigrationRegistry {
_Migration20260824213459360(),
_Migration20260831202219662(),
_Migration20260901174859443(),
_Migration20260902184218563(),
_Migration20260902195734685(),
];
/// List of all client-side database migration versions.