Interface IPlotStructureService
- Namespace
- FishMMO.Database.Npgsql.Services.Interfaces
- Assembly
- FishMMO-DB.dll
Reads and writes the structures built on plots.
public interface IPlotStructureService
Methods
DemolishAllAsync(long, CancellationToken)
Removes everything built on a plot.
Task<DatabaseResult<int>> DemolishAllAsync(long plotID, CancellationToken cancellationToken = default)
Parameters
plotIDlongcancellationTokenCancellationToken
Returns
- Task<DatabaseResult<int>>
The number of structures removed.
Remarks
Used when a plot is released or reclaimed: land handed to somebody else must not come with the previous owner's house still standing on it.
DemolishAsync(long, long, CancellationToken)
Removes a structure, if it stands on the expected plot.
Task<DatabaseResult<int>> DemolishAsync(long structureID, long plotID, CancellationToken cancellationToken = default)
Parameters
structureIDlongThe structure to remove.
plotIDlongThe plot it is expected to stand on.
cancellationTokenCancellationToken
Returns
- Task<DatabaseResult<int>>
1 when removed, 0 when it does not exist or is on another plot.
Remarks
Pinned to the plot so a demolition request can only ever affect the plot the caller was judged against. Without it, a permission check that passed for one plot would authorise deleting a structure on somebody else's.
FetchByPlotAsync(long, CancellationToken)
Fetches everything built on a plot.
Task<DatabaseResult<List<PlotStructureData>>> FetchByPlotAsync(long plotID, CancellationToken cancellationToken = default)
Parameters
plotIDlongcancellationTokenCancellationToken
Returns
FetchByPlotsAsync(List<long>, CancellationToken)
Fetches everything built on any of the given plots.
Task<DatabaseResult<List<PlotStructureData>>> FetchByPlotsAsync(List<long> plotIDs, CancellationToken cancellationToken = default)
Parameters
plotIDsList<long>cancellationTokenCancellationToken
Returns
Remarks
One query for a whole scene's worth of plots. Fetching per plot would be one round trip per foundation on every scene load, which is the cost this exists to avoid.
PlaceAsync(long, int, float, float, float, float, CancellationToken)
Records a newly built structure.
Task<DatabaseResult<long>> PlaceAsync(long plotID, int templateID, float localX, float localY, float localZ, float yaw, CancellationToken cancellationToken = default)
Parameters
plotIDlongtemplateIDintlocalXfloatlocalYfloatlocalZfloatyawfloatcancellationTokenCancellationToken
Returns
- Task<DatabaseResult<long>>
The new structure's identity, or zero on failure.