feat(guides): organize schemas and export teams
This commit is contained in:
@@ -125,4 +125,44 @@ export async function getLatestCatalogSyncJob() {
|
||||
return job ?? null;
|
||||
}
|
||||
|
||||
export async function getPublicTeamExport(teamId: string) {
|
||||
const [row] = await getDb()
|
||||
.select({ team: teamCompositions, guide: guides })
|
||||
.from(teamCompositions)
|
||||
.innerJoin(guides, eq(guides.id, teamCompositions.guideId))
|
||||
.innerJoin(
|
||||
guideSections,
|
||||
and(
|
||||
eq(guideSections.guideId, guides.id),
|
||||
eq(guideSections.slug, "team"),
|
||||
eq(guideSections.enabled, true),
|
||||
),
|
||||
)
|
||||
.where(and(eq(teamCompositions.id, teamId), isNull(guides.trashedAt)))
|
||||
.limit(1);
|
||||
if (!row) return null;
|
||||
|
||||
const members = await getDb()
|
||||
.select({ member: teamMembers, character: catalogCharacters })
|
||||
.from(teamMembers)
|
||||
.innerJoin(
|
||||
catalogCharacters,
|
||||
and(
|
||||
eq(catalogCharacters.version, teamMembers.catalogVersion),
|
||||
eq(catalogCharacters.key, teamMembers.characterKey),
|
||||
),
|
||||
)
|
||||
.where(eq(teamMembers.teamId, teamId))
|
||||
.orderBy(asc(teamMembers.position));
|
||||
|
||||
return {
|
||||
...row.team,
|
||||
guideName: row.guide.name,
|
||||
members: members.map(({ member, character }) => ({
|
||||
...member,
|
||||
character: catalogCharacterWithUrls(character),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
export type PublicGuide = NonNullable<Awaited<ReturnType<typeof getPublicGuide>>>;
|
||||
|
||||
Reference in New Issue
Block a user