feat: add community publishing and news syndication
Validate and deploy production / validate (push) Successful in 23s
Validate and deploy staging / validate (push) Successful in 50s
Validate and deploy production / deploy (push) Failing after 40s
Validate and deploy staging / deploy (push) Failing after 7s

This commit is contained in:
jb
2026-08-01 21:42:09 -04:00
parent b47e2588e9
commit dd84dff055
288 changed files with 83254 additions and 38351 deletions
+38 -30
View File
@@ -4,26 +4,33 @@ import { databaseCategories } from '$lib/database/categories';
import type { PageServerLoad } from './$types';
const tables = {
gear: 'gear',
weapons: 'weapons',
'weapon-mods': 'weapon_mods',
'gear-mods': 'gear_mods',
'os-protocols': 'os_protocols',
talents: 'talents',
brands: 'brand_sets',
'skill-chips': 'skill_chip_sets',
specializations: 'specializations'
gear: 'gear',
weapons: 'weapons',
'weapon-mods': 'weapon_mods',
'gear-mods': 'gear_mods',
'os-protocols': 'os_protocols',
talents: 'talents',
brands: 'brand_sets',
'skill-chips': 'skill_chip_sets',
specializations: 'specializations',
} as const;
export const load: PageServerLoad = async ({ url }) => {
const database = await getDatabase();
const { search, pattern } = getRegistrySearch(url);
const counts = await Promise.all(databaseCategories.map(async (category) => {
const row = await (await database.prepare(`SELECT COUNT(*) AS count FROM ${tables[category.slug]} WHERE active=1`)).get();
return { ...category, count: Number(row?.count ?? 0) };
}));
const searchResults = search
? await (await database.prepare(`
const database = await getDatabase();
const { search, pattern } = getRegistrySearch(url);
const counts = await Promise.all(
databaseCategories.map(async (category) => {
const row = await (
await database.prepare(
`SELECT COUNT(*) AS count FROM ${tables[category.slug]} WHERE active=1`,
)
).get();
return { ...category, count: Number(row?.count ?? 0) };
}),
);
const searchResults = search
? await (
await database.prepare(`
SELECT * FROM (
SELECT 'gear' AS slug,'Gear' AS category,item.name,
item.slot || ' · T' || item.tier AS detail
@@ -113,17 +120,18 @@ export const load: PageServerLoad = async ({ url }) => {
) matches
ORDER BY name COLLATE NOCASE
LIMIT 40
`)).all(...Array(27).fill(pattern))
: [];
return {
registries: counts,
total: counts.reduce((total, registry) => total + registry.count, 0),
search,
searchResults: searchResults.map((result) => ({
slug: String(result.slug),
category: String(result.category),
name: String(result.name),
detail: String(result.detail ?? '')
}))
};
`)
).all(...Array(27).fill(pattern))
: [];
return {
registries: counts,
total: counts.reduce((total, registry) => total + registry.count, 0),
search,
searchResults: searchResults.map((result) => ({
slug: String(result.slug),
category: String(result.category),
name: String(result.name),
detail: String(result.detail ?? ''),
})),
};
};