mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-19 05:55:34 +09:00
31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import type {GuildID, UserID} from '@app/api/BrandedTypes';
|
|
import type {GuildRow} from '@app/api/database/types/GuildTypes';
|
|
import type {Guild} from '@app/api/models/Guild';
|
|
|
|
export abstract class IGuildDataRepository {
|
|
abstract findUnique(guildId: GuildID): Promise<Guild | null>;
|
|
|
|
abstract listGuilds(guildIds: Array<GuildID>): Promise<Array<Guild>>;
|
|
|
|
abstract listAllGuildsPaginated(limit: number, lastGuildId?: GuildID): Promise<Array<Guild>>;
|
|
|
|
abstract listUserGuilds(userId: UserID): Promise<Array<Guild>>;
|
|
|
|
abstract countUserGuilds(userId: UserID): Promise<number>;
|
|
|
|
abstract listOwnedGuildIds(userId: UserID): Promise<Array<GuildID>>;
|
|
|
|
abstract upsert(data: GuildRow, oldData?: GuildRow | null, previousOwnerId?: UserID): Promise<Guild>;
|
|
|
|
abstract upsertPartial(
|
|
guildId: GuildID,
|
|
patch: Partial<GuildRow>,
|
|
oldData?: GuildRow | null,
|
|
previousOwnerId?: UserID,
|
|
): Promise<Guild>;
|
|
|
|
abstract delete(guildId: GuildID, ownerId?: UserID): Promise<void>;
|
|
}
|