fixes
Build And Push Image / docker (push) Successful in 1m29s Details

This commit is contained in:
Matt 2025-08-13 23:03:49 +02:00
parent 3d565e8185
commit 1875fac7d4
1 changed files with 137 additions and 0 deletions

View File

@ -183,6 +183,57 @@
</v-col>
</v-row>
<!-- Data Management -->
<v-row class="mb-6">
<v-col cols="12">
<v-card elevation="2">
<v-card-title>
<v-icon left>mdi-database-cog</v-icon>
Data Management
</v-card-title>
<v-card-text>
<p class="mb-4">Manage data integrity and perform maintenance operations on the portal database.</p>
<v-row>
<v-col cols="12" md="6">
<v-btn
@click="assignMemberIds"
color="warning"
variant="outlined"
prepend-icon="mdi-account-multiple-plus"
block
size="large"
:loading="assigningMemberIds"
>
Assign Member IDs
</v-btn>
<div class="text-caption mt-2 text-medium-emphasis">
Assign unique member IDs (MUSA-0001, MUSA-0002, etc.) to members who don't have them
</div>
</v-col>
<v-col cols="12" md="6">
<v-btn
@click="backfillEventIds"
color="primary"
variant="outlined"
prepend-icon="mdi-calendar-sync"
block
size="large"
:loading="backfillLoading"
>
Backfill Event IDs
</v-btn>
<div class="text-caption mt-2 text-medium-emphasis">
Assign business IDs to events that don't have them
</div>
</v-col>
</v-row>
</v-card-text>
</v-card>
</v-col>
</v-row>
</v-container>
<!-- NocoDB Settings Dialog -->
@ -422,6 +473,10 @@ const overdueCount = ref(0);
const overdueRefreshTrigger = ref(0);
const duesRefreshTrigger = ref(0);
// Data management
const assigningMemberIds = ref(false);
const backfillLoading = ref(false);
// Member dialog state
const showViewDialog = ref(false);
const showEditDialog = ref(false);
@ -719,6 +774,88 @@ const handleMemberUpdated = (member: any) => {
duesRefreshTrigger.value += 1;
};
// Data management functions
const assignMemberIds = async () => {
assigningMemberIds.value = true;
try {
console.log('Starting member ID assignment...');
const response = await $fetch<{
success: boolean;
message: string;
data: {
totalMembers: number;
membersUpdated: number;
updatedMembers: Array<{
id: string;
name: string;
email: string;
memberId: string;
}>;
startingId: string | null;
endingId: string | null;
};
}>('/api/admin/assign-member-ids', {
method: 'POST'
});
if (response.success) {
console.log('✅ Member ID assignment completed:', {
totalMembers: response.data.totalMembers,
membersUpdated: response.data.membersUpdated,
startingId: response.data.startingId,
endingId: response.data.endingId
});
// Show success message
alert(`Success! Assigned member IDs to ${response.data.membersUpdated} members.\nRange: ${response.data.startingId} to ${response.data.endingId}`);
// Refresh dues management data
duesRefreshTrigger.value += 1;
}
} catch (error: any) {
console.error('❌ Failed to assign member IDs:', error);
alert(`Error: ${error.statusMessage || error.message || 'Failed to assign member IDs'}`);
} finally {
assigningMemberIds.value = false;
}
};
const backfillEventIds = async () => {
backfillLoading.value = true;
try {
console.log('Starting event ID backfill...');
const response = await $fetch<{
success: boolean;
message: string;
data: {
totalEvents: number;
eventsUpdated: number;
};
}>('/api/admin/backfill-event-ids', {
method: 'POST'
});
if (response.success) {
console.log('✅ Event ID backfill completed:', {
totalEvents: response.data.totalEvents,
eventsUpdated: response.data.eventsUpdated
});
// Show success message
alert(`Success! Assigned event IDs to ${response.data.eventsUpdated} events.`);
}
} catch (error: any) {
console.error('❌ Failed to backfill event IDs:', error);
alert(`Error: ${error.statusMessage || error.message || 'Failed to backfill event IDs'}`);
} finally {
backfillLoading.value = false;
}
};
// Load stats and overdue count on component mount
onMounted(async () => {
await loadStats();