Skip to content

DKP & Raids

One row per guild member. Tracks cumulative earned and spent DKP. Current balance = EarnedDkp - SpentDkp.

ColumnTypeNotes
Idbigint PKAuto-generated
DiscordIdtextDiscord snowflake of the member
DiscordNametextDisplay name at record creation
EarnedDkpbigintTotal DKP earned from raid attendance
SpentDkpbigintTotal DKP spent on loot claims
DateJoinedtimestampDate the member joined the guild

Used by: /dkp, /attendance

TypeORM Entity
entities/Dkp.ts
@Index('idx_17845_dkp_pkey', ['Id'], { unique: true })
@Entity('dkp', { schema: 'public' })
export class Dkp {
@PrimaryGeneratedColumn({ type: 'bigint', name: 'id' })
Id: number;
@Column('text', { name: 'discord_name', nullable: true })
DiscordName: string;
@Column('bigint', { name: 'earned_dkp', nullable: true })
EarnedDkp: number;
@Column('bigint', { name: 'spent_dkp', nullable: true })
SpentDkp: number;
@Column('text', { name: 'discord_id', nullable: true })
DiscordId: string;
@Column('timestamp without time zone', {
name: 'date_joined',
nullable: true,
})
DateJoined: Date;
}

One row per character per raid event. Created in bulk when an officer pastes /who logs via the /attendance command.

ColumnTypeNotes
Idbigint PKAuto-generated
RaidtextRaid name (references raids.Raid)
NametextCharacter name present at the raid
DiscordIdtextDiscord snowflake of the character’s owner
DatetimestampAttendance timestamp
ModifierbigintDKP value copied from raids.Modifier

Used by: /attendance

TypeORM Entity
entities/Attendance.ts
@Index('idx_17824_attendance_pkey', ['Id'], { unique: true })
@Entity('attendance', { schema: 'public' })
export class Attendance {
@Column('text', { name: 'raid', nullable: true })
Raid: string | null;
@Column('text', { name: 'name', nullable: true })
Name: string | null;
@Column('timestamp without time zone', { name: 'date', nullable: true })
Date: Date | null;
@Column('text', { name: 'discord_id', nullable: true })
DiscordId: string | null;
@PrimaryGeneratedColumn({ type: 'bigint', name: 'id' })
Id: string;
@Column('bigint', { name: 'modifier', nullable: true })
Modifier: string | null;
}

Defines the available raid targets and their DKP values. Populated by officers.

ColumnTypeNotes
Raidtext PKRaid name (e.g. "Fear", "Hate", "Kael Drakkal")
TypetextCategory (e.g. "Open World", "Instanced")
ModifierbigintDKP awarded per attendance
IdbigintNumeric ID (not used as PK)

Used by: /attendance autocomplete

TypeORM Entity
entities/Raids.ts
@Entity('raids', { schema: 'public' })
export class Raids {
@PrimaryColumn('text', { name: 'raid' })
Raid: string;
@Column('text', { name: 'type', nullable: true })
Type: string | null;
@Column('bigint', { name: 'modifier', nullable: true })
Modifier: number | null;
@Column('bigint', { name: 'id', nullable: true })
Id: number | null;
}

Loot award history. Each row records a player winning an item and the DKP they spent.

ColumnTypeNotes
Idbigint PKAuto-generated
NametextCharacter name of the winner
DiscordIdtextDiscord snowflake of the winner
ItemtextName of the awarded item
DkpSpentbigintDKP spent to win the item
DatetimestampDate the item was awarded

Used by: DKP spend tracking and audit

TypeORM Entity
entities/Items.ts
@Index('idx_17851_items_pkey', ['Id'], { unique: true })
@Entity('items', { schema: 'public' })
export class Items {
@Column('text', { name: 'name', nullable: true })
Name: string | null;
@Column('timestamp without time zone', { name: 'date', nullable: true })
Date: Date | null;
@Column('text', { name: 'item', nullable: true })
Item: string | null;
@Column('bigint', { name: 'dkp_spent', nullable: true })
DkpSpent: string | null;
@Column('text', { name: 'discord_id', nullable: true })
DiscordId: string | null;
@PrimaryGeneratedColumn({ type: 'bigint', name: 'id' })
Id: string;
}