Table of Contents

Class CharacterQuestService

Namespace
FishMMO.Database.Npgsql.Services
Assembly
FishMMO-DB.dll

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

dbContextFactory INpgsqlDbContextFactory

Factory 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

characterId long

Character who owns the quest.

templateId int

Quest template ID to delete.

incomingVersion long

Only deletes if this version exceeds the stored version.

cancellationToken CancellationToken

Optional cancellation token.

Returns

Task<DatabaseResult>

FetchAsync(long, CancellationToken)

Fetches a collection of items for the given key.

public Task<DatabaseResult<IReadOnlyList<CharacterQuestData>>> FetchAsync(long characterId, CancellationToken cancellationToken = default)

Parameters

characterId long
cancellationToken CancellationToken

Token to cancel the operation.

Returns

Task<DatabaseResult<IReadOnlyList<CharacterQuestData>>>

PersistAsync(IEnumerable<CharacterQuestData>, CancellationToken)

Persists the provided items.

public Task<DatabaseResult<BulkWriteResult>> PersistAsync(IEnumerable<CharacterQuestData> quests, CancellationToken cancellationToken = default)

Parameters

quests IEnumerable<CharacterQuestData>
cancellationToken CancellationToken

Token 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.