3b76070394
✅ 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>
23 lines
1.2 KiB
JavaScript
23 lines
1.2 KiB
JavaScript
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');
|