Class CharacterKnownAbilityService
Service for managing character known abilities in the database. Provides async operations for CRUD operations on character known ability data. Uses the BaseService execution strategy for automatic retry on transient database failures. Returns DatabaseResult for consistent, safe error handling.
public sealed class CharacterKnownAbilityService : BaseService<CharacterKnownAbilityEntity>, ICharacterKnownAbilityService, IPersistManyAction<CharacterKnownAbilityData>, IDeleteByKeyVersionedAction<long>, IFetchCollectionByKeyAction<long, CharacterKnownAbilityData>
- Inheritance
-
CharacterKnownAbilityService
- Implements
- Inherited Members
Constructors
CharacterKnownAbilityService(INpgsqlDbContextFactory)
Initializes a new instance of the CharacterKnownAbilityService class.
public CharacterKnownAbilityService(INpgsqlDbContextFactory dbContextFactory)
Parameters
dbContextFactoryINpgsqlDbContextFactoryFactory for creating database contexts.
Exceptions
- ArgumentNullException
Thrown when dbContextFactory is null.
Methods
DeleteAsync(long, int, long, CancellationToken)
Deletes a known ability for the specified character if incomingVersion is newer.
public Task<DatabaseResult> DeleteAsync(long characterId, int templateId, long incomingVersion, CancellationToken cancellationToken = default)
Parameters
characterIdlongThe character ID.
templateIdintThe ability template ID.
incomingVersionlongThe authoritative, monotonic version for this delete operation.
cancellationTokenCancellationTokenToken to cancel the operation.
Returns
- Task<DatabaseResult>
A DatabaseResult indicating success or failure.
DeleteAsync(long, long, CancellationToken)
Deletes the entity identified by the given key if incomingVersion is newer.
public Task<DatabaseResult> DeleteAsync(long characterId, long incomingVersion, CancellationToken cancellationToken = default)
Parameters
characterIdlongincomingVersionlongThe authoritative, monotonic version for this delete operation.
cancellationTokenCancellationTokenToken to cancel the operation.
Returns
FetchAsync(long, CancellationToken)
Fetches a collection of items for the given key.
public Task<DatabaseResult<IReadOnlyList<CharacterKnownAbilityData>>> FetchAsync(long characterId, CancellationToken cancellationToken = default)
Parameters
characterIdlongcancellationTokenCancellationTokenToken to cancel the operation.
Returns
PersistAsync(IEnumerable<CharacterKnownAbilityData>, CancellationToken)
Persists the provided items.
public Task<DatabaseResult<BulkWriteResult>> PersistAsync(IEnumerable<CharacterKnownAbilityData> knownAbilities, CancellationToken cancellationToken = default)
Parameters
knownAbilitiesIEnumerable<CharacterKnownAbilityData>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.
PersistAsync(long, int, long, CancellationToken)
Persists a known ability for the specified character.
public Task<DatabaseResult> PersistAsync(long characterId, int templateId, long incomingVersion, CancellationToken cancellationToken = default)
Parameters
characterIdlongThe character ID.
templateIdintThe ability template ID.
incomingVersionlongThe authoritative, monotonic version for this persist operation.
cancellationTokenCancellationTokenToken to cancel the operation.
Returns
- Task<DatabaseResult>
A DatabaseResult indicating success or failure.