// 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; abstract listGuilds(guildIds: Array): Promise>; abstract listAllGuildsPaginated(limit: number, lastGuildId?: GuildID): Promise>; abstract listUserGuilds(userId: UserID): Promise>; abstract countUserGuilds(userId: UserID): Promise; abstract listOwnedGuildIds(userId: UserID): Promise>; abstract upsert(data: GuildRow, oldData?: GuildRow | null, previousOwnerId?: UserID): Promise; abstract upsertPartial( guildId: GuildID, patch: Partial, oldData?: GuildRow | null, previousOwnerId?: UserID, ): Promise; abstract delete(guildId: GuildID, ownerId?: UserID): Promise; }