diff --git a/src/routes/(app)/database/characters/[id]/edit/+page.server.ts b/src/routes/(app)/database/characters/[id]/edit/+page.server.ts new file mode 100644 index 00000000..ad19aec4 --- /dev/null +++ b/src/routes/(app)/database/characters/[id]/edit/+page.server.ts @@ -0,0 +1,34 @@ +import type { PageServerLoad } from './$types' +import { entityAdapter } from '$lib/api/adapters/entity.adapter' +import { error, redirect } from '@sveltejs/kit' + +export const load: PageServerLoad = async ({ params, parent }) => { + // Get parent data to access role + const parentData = await parent() + + // Role check - must be editor level (>= 7) to edit + if (!parentData.role || parentData.role < 7) { + throw redirect(303, `/database/characters/${params.id}`) + } + + try { + const character = await entityAdapter.getCharacter(params.id) + + if (!character) { + throw error(404, 'Character not found') + } + + return { + character, + role: parentData.role + } + } catch (err) { + console.error('Failed to load character:', err) + + if (err instanceof Error && 'status' in err && err.status === 404) { + throw error(404, 'Character not found') + } + + throw error(500, 'Failed to load character') + } +} diff --git a/src/routes/(app)/database/characters/[id]/edit/+page.svelte b/src/routes/(app)/database/characters/[id]/edit/+page.svelte new file mode 100644 index 00000000..5dc9ccbe --- /dev/null +++ b/src/routes/(app)/database/characters/[id]/edit/+page.svelte @@ -0,0 +1,224 @@ + + + + +
+ {#if character} + +
+ + + + + + {#if character?.id && character?.granblueId} + + {/if} +
+
+ {:else} +
+

Character Not Found

+

The character you're looking for could not be found.

+ +
+ {/if} +
+ + diff --git a/src/routes/(app)/database/summons/[id]/edit/+page.server.ts b/src/routes/(app)/database/summons/[id]/edit/+page.server.ts new file mode 100644 index 00000000..22474969 --- /dev/null +++ b/src/routes/(app)/database/summons/[id]/edit/+page.server.ts @@ -0,0 +1,34 @@ +import type { PageServerLoad } from './$types' +import { entityAdapter } from '$lib/api/adapters/entity.adapter' +import { error, redirect } from '@sveltejs/kit' + +export const load: PageServerLoad = async ({ params, parent }) => { + // Get parent data to access role + const parentData = await parent() + + // Role check - must be editor level (>= 7) to edit + if (!parentData.role || parentData.role < 7) { + throw redirect(303, `/database/summons/${params.id}`) + } + + try { + const summon = await entityAdapter.getSummon(params.id) + + if (!summon) { + throw error(404, 'Summon not found') + } + + return { + summon, + role: parentData.role + } + } catch (err) { + console.error('Failed to load summon:', err) + + if (err instanceof Error && 'status' in err && err.status === 404) { + throw error(404, 'Summon not found') + } + + throw error(500, 'Failed to load summon') + } +} diff --git a/src/routes/(app)/database/summons/[id]/edit/+page.svelte b/src/routes/(app)/database/summons/[id]/edit/+page.svelte new file mode 100644 index 00000000..5041ab60 --- /dev/null +++ b/src/routes/(app)/database/summons/[id]/edit/+page.svelte @@ -0,0 +1,339 @@ + + + + +
+ {#if summon} + +
+ + + + + + + + + + + + + + + + + {#if editData.flb} + + {/if} + {#if editData.ulb} + + {/if} + {#if editData.transcendence} + + {/if} + + + + + + + + +
+
+ {:else} +
+

Summon Not Found

+

The summon you're looking for could not be found.

+ +
+ {/if} +
+ + diff --git a/src/routes/(app)/database/weapons/[id]/edit/+page.server.ts b/src/routes/(app)/database/weapons/[id]/edit/+page.server.ts new file mode 100644 index 00000000..2396b5e5 --- /dev/null +++ b/src/routes/(app)/database/weapons/[id]/edit/+page.server.ts @@ -0,0 +1,34 @@ +import type { PageServerLoad } from './$types' +import { entityAdapter } from '$lib/api/adapters/entity.adapter' +import { error, redirect } from '@sveltejs/kit' + +export const load: PageServerLoad = async ({ params, parent }) => { + // Get parent data to access role + const parentData = await parent() + + // Role check - must be editor level (>= 7) to edit + if (!parentData.role || parentData.role < 7) { + throw redirect(303, `/database/weapons/${params.id}`) + } + + try { + const weapon = await entityAdapter.getWeapon(params.id) + + if (!weapon) { + throw error(404, 'Weapon not found') + } + + return { + weapon, + role: parentData.role + } + } catch (err) { + console.error('Failed to load weapon:', err) + + if (err instanceof Error && 'status' in err && err.status === 404) { + throw error(404, 'Weapon not found') + } + + throw error(500, 'Failed to load weapon') + } +} diff --git a/src/routes/(app)/database/weapons/[id]/edit/+page.svelte b/src/routes/(app)/database/weapons/[id]/edit/+page.svelte new file mode 100644 index 00000000..a7a4e97f --- /dev/null +++ b/src/routes/(app)/database/weapons/[id]/edit/+page.svelte @@ -0,0 +1,359 @@ + + + + +
+ {#if weapon} + +
+ + + + + + + + + + + + + + + + + {#if editData.flb} + + {/if} + {#if editData.ulb} + + {/if} + {#if editData.transcendence} + + {/if} + + + + + + + + + + + + +
+
+ {:else} +
+

Weapon Not Found

+

The weapon you're looking for could not be found.

+ +
+ {/if} +
+ +