a homebrewed DnD campaign based in the Honkai: Star Rail universe
hsr honkaistarrail dnd
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

migrate equipment to use remote functions

+58 -37
-16
app/src/routes/(app)/equipment/+page.server.ts
··· 1 - import { db } from '$server/db' 2 - import { EquipmentRepository } from '$server/db/repos/equipment' 3 - import { definePageMeta } from '$ui/page-meta' 4 - import type { PageServerLoad } from './$types' 5 - 6 - export const load: PageServerLoad = async () => { 7 - const equipmentRepo = new EquipmentRepository(db) 8 - const queryEquipments = await equipmentRepo.getEquipmentsBy() 9 - 10 - return { 11 - meta: definePageMeta({ 12 - title: 'Equipment', 13 - }), 14 - equipments: queryEquipments, 15 - } 16 - }
+7 -8
app/src/routes/(app)/equipment/+page.svelte
··· 3 3 import EquipmentIcon from '$ui/icons/EquipmentIcon.svelte' 4 4 import { Breadcrumb } from '$ui/layout/breadcrumb' 5 5 import NoEntriesFound from '../NoEntriesFound.svelte' 6 - import type { PageProps } from './$types' 6 + import { getPageMeta, queryBreadcrumb, queryEquipment } from './page.remote' 7 7 8 - const { data }: PageProps = $props() 9 - const { meta, equipments } = $derived(data) 8 + const meta = await getPageMeta() 9 + const paths = await queryBreadcrumb() 10 + const equipment = await queryEquipment() 10 11 </script> 11 12 12 13 <svelte:head> 13 14 <PageMeta {...meta} /> 14 15 </svelte:head> 15 16 16 - <Breadcrumb links={[ 17 - { path: '/equipment', text: 'Equipment' } 18 - ]} /> 17 + <Breadcrumb links={paths.root} /> 19 18 20 - {#each equipments as equipment (equipment.id)} 21 - {@debug equipment} 19 + {#each equipment as equipmentEntry (equipmentEntry.id)} 20 + {@debug equipmentEntry} 22 21 {:else} 23 22 <NoEntriesFound entryName="equipment"> 24 23 {#snippet icon()}
-10
app/src/routes/(app)/equipment/new/+page.server.ts
··· 1 - import { definePageMeta } from '$ui/page-meta' 2 - import type { PageServerLoad } from './$types' 3 - 4 - export const load: PageServerLoad = async () => { 5 - return { 6 - meta: definePageMeta({ 7 - title: 'Create a new equipment entry', 8 - }), 9 - } 10 - }
+7 -3
app/src/routes/(app)/equipment/new/+page.svelte
··· 1 1 <script lang="ts"> 2 + import { Breadcrumb } from '$ui/layout/breadcrumb' 2 3 import { PageMeta } from '$ui/page-meta' 3 - import type { PageProps } from './$types' 4 + import { queryBreadcrumb } from '../page.remote' 5 + import { getPageMeta } from './page.remote' 4 6 5 - let { data }: PageProps = $props() 6 - const { meta } = $derived(data) 7 + const meta = await getPageMeta() 8 + const paths = await queryBreadcrumb() 7 9 </script> 8 10 9 11 <svelte:head> 10 12 <PageMeta {...meta} /> 11 13 </svelte:head> 14 + 15 + <Breadcrumb links={paths.newEntry} />
+18
app/src/routes/(app)/equipment/new/page.remote.ts
··· 1 + import { form, prerender } from '$app/server' 2 + import { db } from '$server/db' 3 + import { EquipmentRepository, zEquipmentSchema } from '$server/db/repos/equipment' 4 + import { definePageMeta } from '$ui/page-meta' 5 + 6 + export const getPageMeta = prerender(() => 7 + definePageMeta({ 8 + title: 'Create a new equipment entry', 9 + }), 10 + ) 11 + 12 + export const createEquipment = form( 13 + zEquipmentSchema.toInsert.omit({ createdAt: true, updatedAt: true }), 14 + async (data, issue) => { 15 + const equipmentRepo = new EquipmentRepository(db) 16 + return await equipmentRepo.createEquipment(data) 17 + }, 18 + )
+26
app/src/routes/(app)/equipment/page.remote.ts
··· 1 + import { prerender, query } from '$app/server' 2 + import { db } from '$server/db' 3 + import { EquipmentRepository } from '$server/db/repos/equipment' 4 + import { definePaths } from '$ui/layout/breadcrumb' 5 + import { definePageMeta } from '$ui/page-meta' 6 + 7 + export const getPageMeta = prerender(() => 8 + definePageMeta({ 9 + title: 'Equipment', 10 + }), 11 + ) 12 + 13 + export const queryEquipment = query(async () => { 14 + const equipmentRepo = new EquipmentRepository(db) 15 + return await equipmentRepo.getEquipmentsBy() 16 + }) 17 + 18 + export const queryBreadcrumb = query(async () => { 19 + const root = { path: '/equipment', text: 'Equipment' } 20 + const newEntry = { path: '/equipment/new', text: 'Create a new equipment entry' } 21 + 22 + return definePaths({ 23 + root: [root], 24 + newEntry: [root, newEntry], 25 + }) 26 + })