/** * Campaign Repository * * Data access layer for Campaign entities. * Extends BaseRepository from @plyaz/db for consistent CRUD operations. * * @fileoverview Campaign data repository with database support * @module CampaignRepository */ import { BaseRepository } from '@plyaz/db'; import type { DatabaseResult, PaginatedResult, QueryOptions, DatabaseServiceInterface, OperationConfig } from '@plyaz/types/db'; import type { CampaignDatabaseRow } from '@plyaz/types/campaign'; /** * Campaign Repository * * Data access layer for Campaign entities. * Extends BaseRepository from @plyaz/db for consistent CRUD operations. * * Inherited from BaseRepository (used directly, no override needed): * - findById(id) - Get campaign by ID * - delete(id) - Hard delete campaign * - softDelete(id) - Soft delete campaign * - exists(id) - Check if campaign exists * - query() - Fluent QueryBuilder for complex queries * - count(filter) - Count campaigns matching filter * - findOne(filter) - Find first matching campaign * * Overridden with domain logic: * - findMany(options) - Default sorting by created_at DESC * - create(data) - Auto-generate ID and timestamps * * Domain-specific methods: * - findByStatus(status) - Get campaigns by status * - findByCreator(creatorId) - Get campaigns by creator * - findBySport(sport) - Get campaigns by sport * - countByStatus(status) - Count campaigns by status */ export declare class CampaignRepository extends BaseRepository { constructor(db: DatabaseServiceInterface); /** * Create repository instance. * Uses DbService if initialized. */ static create(): CampaignRepository; /** * Find multiple campaigns with default sorting */ findMany(options?: QueryOptions, config?: OperationConfig): Promise>>; /** * Create new campaign record with auto-generated ID and timestamps */ create(data: Partial, config?: OperationConfig): Promise>; /** * Get the table name for this repository */ getTableName(): string; /** * Find campaigns by status */ findByStatus(status: string, options?: { limit?: number; offset?: number; }): Promise>>; /** * Find campaigns by creator */ findByCreator(creatorId: string, options?: { limit?: number; offset?: number; }): Promise>>; /** * Find campaigns by sport */ findBySport(sport: string, options?: { limit?: number; offset?: number; }): Promise>>; /** * Find active campaigns (not deleted, with active status) */ findActiveCampaigns(options?: { limit?: number; offset?: number; }): Promise>>; /** * Count campaigns by status */ countByStatus(status: string): Promise>; /** * Count campaigns by creator */ countByCreator(creatorId: string): Promise>; } //# sourceMappingURL=CampaignRepository.d.ts.map