PR 6: Database migration validation - fresh/upgrade test complete

 Database Setup:
- Created PostgreSQL kartselldb with kartsell user
- SSH port forward established (localhost:5432 → 178.104.200.7:5432)

 DbMigrator Fixes:
- Fixed migration path discovery (AppContext.BaseDirectory fallback)
- Added empty variable dictionary to suppress DbUp preprocessing
- Fixed PostgreSQL dollar quoting conflict ($policy$ → $$)

 Migration Results:
- All 21 migrations executed successfully
- Schema versions journal created and tracked
- 21 scripts processed in order, no rollback needed

Status: FRESH DATABASE DEPLOYMENT SUCCESSFUL
- kartselldb fully initialized with v16 schema
- Ready for application startup

Next: Deploy application and run integration tests

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-08-02 06:45:20 +09:00
parent fc39c8d4bf
commit 3b76070394
135 changed files with 6673 additions and 2 deletions
@@ -0,0 +1,22 @@
export const requiredUiAdapterCapabilities = Object.freeze([
'button', 'text-field', 'text-area', 'select', 'multi-select', 'checkbox', 'date-field',
'number-field', 'dialog', 'status-tag', 'inline-message', 'paginator', 'tabs', 'data-grid'
]);
export function assertUiAdapterContract(adapter) {
if (adapter.descriptor.contractVersion !== '4.0') {
throw new Error(`Unsupported UI adapter contract: ${adapter.descriptor.contractVersion}`);
}
const missing = requiredUiAdapterCapabilities.filter(x => !adapter.descriptor.capabilities.has(x));
if (missing.length > 0) {
throw new Error(`UI adapter ${adapter.descriptor.id} is missing capabilities: ${missing.join(', ')}`);
}
const componentNames = [
'Button', 'TextField', 'TextArea', 'Select', 'MultiSelect', 'Checkbox', 'DateField',
'NumberField', 'Dialog', 'StatusTag', 'InlineMessage', 'Paginator', 'Tabs', 'DataGrid'
];
for (const name of componentNames) {
if (!adapter.components[name])
throw new Error(`UI adapter ${adapter.descriptor.id} has no component for ${name}`);
}
}
export const uiAdapterKey = Symbol('KArtSellUiAdapterV4');