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.

add DatabaseSource type, update repository classes to use it

Also fixes some issues with leftover imports during refactoring:
- i initially had a `repo.ts` in directories to allow re-exporting for deep imports, but had removed it (may re-add later in the future?)
- zDrizzleSchema function was moved around in lib/server/db but not updated in some places

+86 -81
+3 -3
app/src/lib/server/auth/auth-repo.ts
··· 1 1 import { eq, type InferSelectModel } from 'drizzle-orm' 2 2 import type { Auth } from '$server/auth' 3 - import type { DatabaseConn } from '$server/db/types' 3 + import type { DatabaseSource } from '$server/db/types' 4 4 import { user } from '$server/auth/db-schema' 5 5 import { querySingle, lower } from '$server/db/expressions' 6 6 ··· 10 10 export type UserId = User['id'] 11 11 12 12 export class AuthRepository { 13 - private db: DatabaseConn 13 + private db: DatabaseSource 14 14 private auth: Auth 15 - public constructor(db: DatabaseConn, auth: Auth) { 15 + public constructor(db: DatabaseSource, auth: Auth) { 16 16 this.db = db 17 17 this.auth = auth 18 18 }
+3 -3
app/src/lib/server/background/background-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 TableColumnNames, 6 6 UpdateQueryParams, ··· 38 38 export const zBackgroundSkillProficiencySchema = zDrizzleSchema(backgroundSkillProficiency) 39 39 40 40 export class BackgroundRepository implements RepositoryCountable { 41 - private db: DatabaseConn 42 - public constructor(db: DatabaseConn) { 41 + private db: DatabaseSource 42 + public constructor(db: DatabaseSource) { 43 43 this.db = db 44 44 } 45 45
+5 -4
app/src/lib/server/background/equipment-package-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn } from '$server/db' 2 + import type { DatabaseSource } from '$server/db/types' 3 3 import { background, equipmentPackage, equipmentPackageItem } from '$server/background/db-schema' 4 - import { querySingle, zDrizzleSchema } from '$server/db/expressions' 4 + import { querySingle } from '$server/db/expressions' 5 + import { zDrizzleSchema } from '$server/db/standard-schema' 5 6 6 7 export type EquipmentPackageTable = typeof equipmentPackage 7 8 export type EquipmentPackage = InferSelectModel<EquipmentPackageTable> ··· 16 17 export const zEquipmentPackageItemSchema = zDrizzleSchema(equipmentPackageItem) 17 18 18 19 export class EquipmentPackageRepository { 19 - private db: DatabaseConn 20 - public constructor(db: DatabaseConn) { 20 + private db: DatabaseSource 21 + public constructor(db: DatabaseSource) { 21 22 this.db = db 22 23 } 23 24
+4 -4
app/src/lib/server/campaign/campaign-member-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { UserId } from '$server/auth/auth-repo' 3 - import type { Campaign } from '$server/campaign/repos' 4 - import type { DatabaseConn } from '$server/db/types' 3 + import type { Campaign } from '$server/campaign/campaign-repo' 4 + import type { DatabaseSource } from '$server/db/types' 5 5 import { user } from '$server/auth/db-schema' 6 6 import { campaign, campaignMember } from '$server/campaign/db-schema' 7 7 import { zDrizzleSchema } from '$server/db/standard-schema' ··· 13 13 export const zCampaignMemberSchema = zDrizzleSchema(campaignMember) 14 14 15 15 export class CampaignMemberRepository { 16 - private db: DatabaseConn 17 - public constructor(db: DatabaseConn) { 16 + private db: DatabaseSource 17 + public constructor(db: DatabaseSource) { 18 18 this.db = db 19 19 } 20 20
+3 -3
app/src/lib/server/campaign/campaign-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn, TableColumnNames, UpdateQueryParams } from '$server/db/types' 2 + import type { DatabaseSource, TableColumnNames, UpdateQueryParams } from '$server/db/types' 3 3 import { user } from '$server/auth/db-schema' 4 4 import { campaign, campaignSession, campaignSourceMaterial } from '$server/campaign/db-schema' 5 5 import { querySingle } from '$server/db/expressions' ··· 20 20 export const zCampaignSessionSchema = zDrizzleSchema(campaignSession) 21 21 22 22 export class CampaignRepository { 23 - private db: DatabaseConn 24 - public constructor(db: DatabaseConn) { 23 + private db: DatabaseSource 24 + public constructor(db: DatabaseSource) { 25 25 this.db = db 26 26 } 27 27
+3 -3
app/src/lib/server/character/character-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { UserId } from '$server/auth/auth-repo' 3 - import type { DatabaseConn, UpdateQueryParams } from '$server/db/types' 3 + import type { DatabaseSource, UpdateQueryParams } from '$server/db/types' 4 4 import { user } from '$server/auth/db-schema' 5 5 import { background } from '$server/background/db-schema' 6 6 import { ··· 44 44 export type CharactersByUser = ReturnType<CharacterRepository['getCharactersByUser']> 45 45 46 46 export class CharacterRepository { 47 - private db: DatabaseConn 48 - public constructor(db: DatabaseConn) { 47 + private db: DatabaseSource 48 + public constructor(db: DatabaseSource) { 49 49 this.db = db 50 50 } 51 51
+5 -5
app/src/lib/server/character/character-status-repo.ts
··· 1 1 import { and, eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { Character } from '$server/character/character' 3 - import type { DatabaseConn } from '$server/db' 2 + import type { Character } from '$server/character/character-repo' 3 + import type { DatabaseSource } from '$server/db/types' 4 4 import { 5 5 characterCondition, 6 6 characterConditionImmunity, ··· 8 8 characterDmgVulnerability, 9 9 characterDmgImmunity, 10 10 } from '$server/character/db-schema' 11 - import { zDrizzleSchema } from '$server/db/expressions' 11 + import { zDrizzleSchema } from '$server/db/standard-schema' 12 12 import { condition, damage } from '$server/mechanic/db-schema' 13 13 14 14 export type CharacterConditionTable = typeof characterCondition ··· 42 42 export const zCharacterImmunitySchema = zDrizzleSchema(characterDmgImmunity) 43 43 44 44 export class CharacterStatusRepository { 45 - private db: DatabaseConn 46 - public constructor(db: DatabaseConn) { 45 + private db: DatabaseSource 46 + public constructor(db: DatabaseSource) { 47 47 this.db = db 48 48 } 49 49
+3 -3
app/src/lib/server/class/class-feature-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn, RepositoryCountable } from '$server/db/types' 2 + import type { DatabaseSource, RepositoryCountable } from '$server/db/types' 3 3 import { 4 4 characterClass, 5 5 characterClassFeature, ··· 21 21 export const zClassFeatureModSchema = zDrizzleSchema(characterClassFeatureMod) 22 22 23 23 export class ClassFeatureRepository implements RepositoryCountable { 24 - private db: DatabaseConn 25 - public constructor(db: DatabaseConn) { 24 + private db: DatabaseSource 25 + public constructor(db: DatabaseSource) { 26 26 this.db = db 27 27 } 28 28
+3 -3
app/src/lib/server/class/class-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 TableColumnNames, 6 6 UpdateQueryParams, ··· 18 18 export const zClassSchema = zDrizzleSchema(characterClass) 19 19 20 20 export class ClassRepository implements RepositoryCountable { 21 - private db: DatabaseConn 22 - public constructor(db: DatabaseConn) { 21 + private db: DatabaseSource 22 + public constructor(db: DatabaseSource) { 23 23 this.db = db 24 24 } 25 25
+5 -1
app/src/lib/server/db/types.ts
··· 4 4 import type { db } from '.' 5 5 6 6 export type DatabaseConn = typeof db 7 - 8 7 /** 9 8 * Based on the definition of the transaction() method, defined as (simplified here): 10 9 * ```ts ··· 12 11 * ``` 13 12 */ 14 13 export type DatabaseTransaction = Parameters<Parameters<DatabaseConn['transaction']>[0]>[0] 14 + /** 15 + * A type representing either a direct database connection 16 + * or the body of a database a transaction 17 + */ 18 + export type DatabaseSource = DatabaseConn | DatabaseTransaction 15 19 16 20 export type UpdateQueryParams<Id, Model> = { 17 21 id: Id
+3 -3
app/src/lib/server/equipment/armor-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 2 + import type { DatabaseSource, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 3 3 import { querySingle } from '$server/db/expressions' 4 4 import { armor, equipment } from '$server/equipment/db-schema' 5 5 import { EquipmentRepository, type NewEquipment } from '$server/equipment/equipment-repo' ··· 10 10 export type UpdateArmor = Partial<NewArmor> 11 11 12 12 export class ArmorRepository implements RepositoryCountable { 13 - private db: DatabaseConn 14 - public constructor(db: DatabaseConn) { 13 + private db: DatabaseSource 14 + public constructor(db: DatabaseSource) { 15 15 this.db = db 16 16 } 17 17
+3 -4
app/src/lib/server/equipment/equipment-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 4 - DatabaseTransaction, 3 + DatabaseSource, 5 4 RepositoryCountable, 6 5 TableColumnNames, 7 6 UpdateQueryParams, ··· 19 18 export const zEquipmentSchema = zDrizzleSchema(equipment) 20 19 21 20 export class EquipmentRepository implements RepositoryCountable { 22 - private db: DatabaseConn | DatabaseTransaction 23 - public constructor(db: DatabaseConn | DatabaseTransaction) { 21 + private db: DatabaseSource 22 + public constructor(db: DatabaseSource) { 24 23 this.db = db 25 24 } 26 25
+4 -4
app/src/lib/server/equipment/tool-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 2 + import type { DatabaseSource, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 3 3 import { querySingle } from '$server/db/expressions' 4 4 import { zDrizzleSchema } from '$server/db/standard-schema' 5 5 import { equipment, tool } from '$server/equipment/db-schema' 6 - import { EquipmentRepository, type NewEquipment } from '$server/equipment/repos' 6 + import { EquipmentRepository, type NewEquipment } from '$server/equipment/equipment-repo' 7 7 import { ability } from '$server/mechanic/db-schema' 8 8 9 9 export type ToolTable = typeof tool ··· 13 13 export const zToolSchema = zDrizzleSchema(tool) 14 14 15 15 export class ToolRepository implements RepositoryCountable { 16 - private db: DatabaseConn 17 - public constructor(db: DatabaseConn) { 16 + private db: DatabaseSource 17 + public constructor(db: DatabaseSource) { 18 18 this.db = db 19 19 } 20 20
+3 -3
app/src/lib/server/faction/faction-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 TableColumnNames, 6 6 UpdateQueryParams, ··· 18 18 export const zFactionSchema = zDrizzleSchema(faction) 19 19 20 20 export class FactionRepository implements RepositoryCountable { 21 - private db: DatabaseConn 22 - public constructor(db: DatabaseConn) { 21 + private db: DatabaseSource 22 + public constructor(db: DatabaseSource) { 23 23 this.db = db 24 24 } 25 25
+3 -3
app/src/lib/server/feat/feat-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 TableColumnNames, 6 6 UpdateQueryParams, ··· 17 17 export const zFeatSchema = zDrizzleSchema(feat) 18 18 19 19 export class FeatRepository implements RepositoryCountable { 20 - private db: DatabaseConn 21 - public constructor(db: DatabaseConn) { 20 + private db: DatabaseSource 21 + public constructor(db: DatabaseSource) { 22 22 this.db = db 23 23 } 24 24
+3 -3
app/src/lib/server/language/language-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 RepositoryCountableWithSourceBook, 6 6 UpdateQueryParams, ··· 18 18 export const zLanguageSchema = zDrizzleSchema(language) 19 19 20 20 export class LanguageRepository implements RepositoryCountable, RepositoryCountableWithSourceBook { 21 - private db: DatabaseConn 22 - public constructor(db: DatabaseConn) { 21 + private db: DatabaseSource 22 + public constructor(db: DatabaseSource) { 23 23 this.db = db 24 24 } 25 25
+3 -3
app/src/lib/server/mechanic/condition-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 2 + import type { DatabaseSource, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 3 3 import { querySingle } from '$server/db/expressions' 4 4 import { zDrizzleSchema } from '$server/db/standard-schema' 5 5 import { condition } from '$server/mechanic/db-schema' ··· 12 12 export const zConditionSchema = zDrizzleSchema(condition) 13 13 14 14 export class ConditionRepository implements RepositoryCountable { 15 - private db: DatabaseConn 16 - public constructor(db: DatabaseConn) { 15 + private db: DatabaseSource 16 + public constructor(db: DatabaseSource) { 17 17 this.db = db 18 18 } 19 19
+3 -3
app/src/lib/server/mechanic/damage-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 2 + import type { DatabaseSource, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 3 3 import { querySingle } from '$server/db/expressions' 4 4 import { zDrizzleSchema } from '$server/db/standard-schema' 5 5 import { damage } from '$server/mechanic/db-schema' ··· 12 12 export const zDamageTable = zDrizzleSchema(damage) 13 13 14 14 export class DamageRepository implements RepositoryCountable { 15 - private db: DatabaseConn 16 - public constructor(db: DatabaseConn) { 15 + private db: DatabaseSource 16 + public constructor(db: DatabaseSource) { 17 17 this.db = db 18 18 } 19 19
+3 -3
app/src/lib/server/monster/monster-defense-repo.ts
··· 1 1 import type { InferSelectModel, InferInsertModel } from 'drizzle-orm' 2 - import type { DatabaseConn, DatabaseTransaction } from '$server/db/types' 2 + import type { DatabaseSource } from '$server/db/types' 3 3 import type { Monster } from '$server/monster/monster-repo' 4 4 import { zDrizzleSchema } from '$server/db/standard-schema' 5 5 import { monsterDmgImmunity, monsterDmgResistance, monsterDmgVulnerability } from './db-schema' ··· 23 23 export const zMonsterVulnerabilitySchema = zDrizzleSchema(monsterDmgVulnerability) 24 24 25 25 export class MonsterDefenseRepository { 26 - private db: DatabaseConn | DatabaseTransaction 27 - public constructor(db: DatabaseConn | DatabaseTransaction) { 26 + private db: DatabaseSource 27 + public constructor(db: DatabaseSource) { 28 28 this.db = db 29 29 } 30 30
+6 -5
app/src/lib/server/monster/monster-instance-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn } from '$server/db' 3 - import { querySingle, zDrizzleSchema, type UpdateQueryParams } from '$server/db/expressions' 4 - import { monster, monsterInstance } from '$server/db/schemas/dnd/monster-schema' 2 + import type { DatabaseSource, UpdateQueryParams } from '$server/db/types' 3 + import { querySingle } from '$server/db/expressions' 4 + import { zDrizzleSchema } from '$server/db/standard-schema' 5 + import { monster, monsterInstance } from '$server/monster/db-schema' 5 6 6 7 export type MonsterInstanceTable = typeof monsterInstance 7 8 export type MonsterInstance = InferSelectModel<MonsterInstanceTable> ··· 10 11 export const zMonsterInstanceSchema = zDrizzleSchema(monsterInstance) 11 12 12 13 export class MonsterInstanceRepository { 13 - private db: DatabaseConn 14 - public constructor(db: DatabaseConn) { 14 + private db: DatabaseSource 15 + public constructor(db: DatabaseSource) { 15 16 this.db = db 16 17 } 17 18
+3 -3
app/src/lib/server/monster/monster-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 RepositoryCountableWithSourceBook, 6 6 TableColumnNames, ··· 37 37 export const zMonsterAbilitySchema = zDrizzleSchema(monsterAbility) 38 38 39 39 export class MonsterRepository implements RepositoryCountable, RepositoryCountableWithSourceBook { 40 - private db: DatabaseConn 41 - public constructor(db: DatabaseConn) { 40 + private db: DatabaseSource 41 + public constructor(db: DatabaseSource) { 42 42 this.db = db 43 43 } 44 44
+3 -3
app/src/lib/server/readable/readable-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 - import type { DatabaseConn, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 2 + import type { DatabaseSource, RepositoryCountable, UpdateQueryParams } from '$server/db/types' 3 3 import { querySingle } from '$server/db/expressions' 4 4 import { zDrizzleSchema } from '$server/db/standard-schema' 5 5 import { faction } from '$server/faction/db-schema' ··· 13 13 export const zReadableSchema = zDrizzleSchema(readable) 14 14 15 15 export class ReadableRepository implements RepositoryCountable { 16 - private db: DatabaseConn 17 - public constructor(db: DatabaseConn) { 16 + private db: DatabaseSource 17 + public constructor(db: DatabaseSource) { 18 18 this.db = db 19 19 } 20 20
+3 -3
app/src/lib/server/sourcebook/sourcebook-repo.ts
··· 1 1 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 TableColumnNames, 6 6 UpdateQueryParams, ··· 17 17 export const zSourcebookSchema = zDrizzleSchema(sourcebook) 18 18 19 19 export class SourcebookRepository implements RepositoryCountable { 20 - private db: DatabaseConn 21 - public constructor(db: DatabaseConn) { 20 + private db: DatabaseSource 21 + public constructor(db: DatabaseSource) { 22 22 this.db = db 23 23 } 24 24
+3 -3
app/src/lib/server/species/species-repo.ts
··· 1 1 import { eq, type InferSelectModel } from 'drizzle-orm' 2 2 import type { 3 - DatabaseConn, 3 + DatabaseSource, 4 4 RepositoryCountable, 5 5 TableColumnNames, 6 6 UpdateQueryParams, ··· 18 18 export const zSpeciesSchema = zDrizzleSchema(species) 19 19 20 20 export class SpeciesRepository implements RepositoryCountable { 21 - private db: DatabaseConn 22 - public constructor(db: DatabaseConn) { 21 + private db: DatabaseSource 22 + public constructor(db: DatabaseSource) { 23 23 this.db = db 24 24 } 25 25
+3 -3
app/src/lib/server/spell/spell-repo.ts
··· 1 1 import type { SpellDuration } from '@starlight/types/dnd' 2 2 import { eq, type InferInsertModel, type InferSelectModel } from 'drizzle-orm' 3 3 import type { 4 - DatabaseConn, 4 + DatabaseSource, 5 5 RepositoryCountable, 6 6 TableColumnNames, 7 7 UpdateQueryParams, ··· 26 26 export const zSpellSchema = zDrizzleSchema(spell) 27 27 28 28 export class SpellRepository implements RepositoryCountable { 29 - private db: DatabaseConn 30 - public constructor(db: DatabaseConn) { 29 + private db: DatabaseSource 30 + public constructor(db: DatabaseSource) { 31 31 this.db = db 32 32 } 33 33