Class CharacterQuestService
Service for managing character quests in the database. Provides async operations for CRUD operations on character quest data. Uses the BaseService execution strategy for automatic retry on transient database failures. Returns DatabaseResult for consistent, safe error handling.
public sealed class CharacterQuestService : BaseService<CharacterQuestEntity>, ICharacterQuestService, IPersistManyAction<CharacterQuestData>, IFetchCollectionByKeyAction<long, CharacterQuestData>
- Inheritance
-
CharacterQuestService
- Implements
- Inherited Members
Constructors
CharacterQuestService(INpgsqlDbContextFactory)
Initializes a new instance of the CharacterQuestService class.
public CharacterQuestService(INpgsqlDbContextFactory dbContextFactory)
Parameters
dbContextFactoryINpgsqlDbContextFactoryFactory for creating database contexts.
Exceptions
- ArgumentNullException
Thrown when dbContextFactory is null.
Methods
DeleteQuestAsync(long, int, long, CancellationToken)
Soft-deletes a specific quest for a character, gated by version. Used when a quest is turned in or abandoned.
public Task<DatabaseResult> DeleteQuestAsync(long characterId, int templateId, long incomingVersion, CancellationToken cancellationToken = default)
Parameters
characterIdlongCharacter who owns the quest.
templateIdintQuest template ID to delete.
incomingVersionlongOnly deletes if this version exceeds the stored version.
cancellationTokenCancellationTokenOptional cancellation token.
Returns
FetchAsync(long, CancellationToken)
Fetches a collection of items for the given key.
public Task<DatabaseResult<IReadOnlyList<CharacterQuestData>>> FetchAsync(long characterId, CancellationToken cancellationToken = default)
Parameters
characterIdlongcancellationTokenCancellationTokenToken to cancel the operation.
Returns
PersistAsync(IEnumerable<CharacterQuestData>, CancellationToken)
Persists the provided items.
public Task<DatabaseResult<BulkWriteResult>> PersistAsync(IEnumerable<CharacterQuestData> quests, CancellationToken cancellationToken = default)
Parameters
questsIEnumerable<CharacterQuestData>cancellationTokenCancellationTokenToken to cancel the operation.
Returns
- Task<DatabaseResult<BulkWriteResult>>
What the write actually did, or a failure.
Remarks
A successful result does not mean every supplied row was written. Batched writes are version-gated and the service filters what it cannot act on, so the outcome carries counts rather than a bare boolean — see BulkWriteResult, which explains which discrepancies a caller should care about and which are routine.