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,58 @@
const props = withDefaults(defineProps(), { modelValue: () => [] });
const emit = defineEmits();
function update(event) {
const selected = Array.from(event.target.selectedOptions).map(x => {
const option = props.options[Number(x.value)];
return option?.value ?? null;
});
emit('update:modelValue', selected);
}
const __VLS_defaults = { modelValue: () => [] };
const __VLS_ctx = {
...{},
...{},
...{},
...{},
...{},
};
let __VLS_components;
let __VLS_intrinsics;
let __VLS_directives;
__VLS_asFunctionalElement1(__VLS_intrinsics.label, __VLS_intrinsics.label)({
...{ class: "ks-field" },
});
/** @type {__VLS_StyleScopedClasses['ks-field']} */ ;
if (__VLS_ctx.label) {
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({});
(__VLS_ctx.label);
if (__VLS_ctx.required) {
__VLS_asFunctionalElement1(__VLS_intrinsics.b, __VLS_intrinsics.b)({
'aria-hidden': "true",
});
}
}
__VLS_asFunctionalElement1(__VLS_intrinsics.select, __VLS_intrinsics.select)({
...{ onChange: (__VLS_ctx.update) },
multiple: true,
disabled: (__VLS_ctx.disabled),
required: (__VLS_ctx.required),
});
for (const [option, index] of __VLS_vFor((__VLS_ctx.options))) {
__VLS_asFunctionalElement1(__VLS_intrinsics.option, __VLS_intrinsics.option)({
key: (`${index}:${option.label}`),
value: (index),
disabled: (option.disabled),
selected: (__VLS_ctx.modelValue.includes(option.value)),
});
(option.label);
// @ts-ignore
[label, label, required, required, update, disabled, options, modelValue,];
}
// @ts-ignore
[];
const __VLS_export = (await import('vue')).defineComponent({
__typeEmits: {},
__typeProps: {},
props: {},
});
export default {};