using EAIAdminDAL.DTO; using GB5Shared.DTO.Framework.Login; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace EAIAdminDAL.CustomCode { public interface IEAIPromptTemplateAdminDAL { Task> GetPromptTemplateListAsync( string? search, LoginDTO login, CancellationToken ct = default); Task GetPromptTemplateAsync( int promptId, LoginDTO login, CancellationToken ct = default); Task InsertPromptTemplateAsync( EAIPromptTemplateAdminDTO dto, LoginDTO login, CancellationToken ct = default); Task UpdatePromptTemplateAsync( EAIPromptTemplateAdminDTO dto, LoginDTO login, CancellationToken ct = default); /// Persists both EAIRemoteId and the server-computed PromptVersion returned by /// gbEAI's push response. Pass null for either to leave that column unchanged. Task UpdateSyncResultAsync( int promptId, long? eaiRemoteId, int? promptVersion, LoginDTO login, CancellationToken ct = default); Task DeletePromptTemplateAsync( int promptId, LoginDTO login, CancellationToken ct = default); /// Per-tenant uniqueness on (TenantId, InitiativeCode, CapabilityCode, /// VariantCode) — NOT a globally unique code column like Initiative's /// InitiativeCodeExistsAsync. VariantCode null means the capability-wide default row. Task ExistsAsync( string initiativeCode, string capabilityCode, string? variantCode, int excludePromptId, LoginDTO login, CancellationToken ct = default); } }