コード例 #1
0
 /// <summary>
 ///     TODO: use sqlite returning statement.
 ///     https://github.com/ericsink/SQLitePCL.raw/issues/416.
 /// </summary>
 /// <param name="transaction">The transaction.</param>
 /// <param name="startsWith">The start string to deleted.</param>
 public ValueTask <int> DeleteByStartsWithAsync(IDbTransaction transaction, string startsWith)
 {
     return(transaction.ExecuteNonQueryAsync(
                () => DeleteByStartsWithPathCommand,
                $"{nameof(DatabaseTable)}/{nameof(DeleteByStartsWithPathCommand)}/{TableName}",
                SqliteTransaction.EscapeLikeContent(startsWith) + "%"));
 }
コード例 #2
0
 public ValueTask <int> DeleteByPathAsync(IDbTransaction transaction, string path)
 {
     return(transaction.ExecuteNonQueryAsync(
                () => DeleteByPathCommand,
                $"{nameof(DatabaseTable)}/{nameof(DeleteByPathCommand)}/{TableName}",
                path));
 }
コード例 #3
0
 public async ValueTask <bool> DeletePropertyOnFileUpdated(IDbTransaction transaction, long target)
 {
     return(await transaction.ExecuteNonQueryAsync(
                () => DeletePropertyByTargetAndFeatureCommand,
                $"{nameof(DatabaseTable)}/{nameof(DeletePropertyByTargetAndFeatureCommand)}/{TableName}",
                target,
                PropertyFeature.AutoDeleteWhenFileUpdate) != 0);
 }
コード例 #4
0
 public async ValueTask <bool> DeleteProperty(IDbTransaction transaction, long target, string key)
 {
     return(await transaction.ExecuteNonQueryAsync(
                () => DeletePropertyByTargetAndKeyCommand,
                $"{nameof(DatabaseTable)}/{nameof(DeletePropertyByTargetAndKeyCommand)}/{TableName}",
                target,
                key) != 0);
 }
コード例 #5
0
 public ValueTask <PropertyDataRow[]> SelectPropertiesByTargetAsync(
     IDbTransaction transaction,
     long target)
 {
     return(transaction.ExecuteReaderAsync(
                () => SelectPropertiesByTargetCommand,
                $"{nameof(DatabaseTable)}/{nameof(SelectPropertiesByTargetCommand)}/{TableName}",
                HandleReaderPropertyDataRows,
                target));
 }
コード例 #6
0
 public ValueTask <DataRow[]> SelectByStartsWithAsync(
     IDbTransaction transaction,
     string startsWith)
 {
     return(transaction.ExecuteReaderAsync(
                () => SelectByStartsWithPathCommand,
                $"{nameof(DatabaseTable)}/{nameof(SelectByStartsWithPathCommand)}/{TableName}",
                HandleReaderDataRows,
                SqliteTransaction.EscapeLikeContent(startsWith) + "%"));
 }
コード例 #7
0
 public ValueTask <DataRow[]> SelectByParentAsync(
     IDbTransaction transaction,
     long parent)
 {
     return(transaction.ExecuteReaderAsync(
                () => SelectByParentCommand,
                $"{nameof(DatabaseTable)}/{nameof(SelectByParentCommand)}/{TableName}",
                HandleReaderDataRows,
                parent));
 }
コード例 #8
0
 public ValueTask <DataRow?> SelectByPathAsync(
     IDbTransaction transaction,
     string path)
 {
     return(transaction.ExecuteReaderAsync(
                () => SelectByPathCommand,
                $"{nameof(DatabaseTable)}/{nameof(SelectByPathCommand)}/{TableName}",
                HandleReaderSingleDataRow,
                path));
 }
コード例 #9
0
 public ValueTask <int> UpdateStatsByIdAsync(
     IDbTransaction transaction,
     long id,
     string contentTag)
 {
     return(transaction.ExecuteNonQueryAsync(
                () => UpdateStatsByIdCommand,
                $"{nameof(DatabaseTable)}/{nameof(UpdateStatsByIdCommand)}/{TableName}",
                id,
                contentTag));
 }
コード例 #10
0
 public ValueTask <PropertyDataRow?> SelectPropertyAsync(
     IDbTransaction transaction,
     long target,
     string key)
 {
     return(transaction.ExecuteReaderAsync(
                () => SelectPropertyByTargetAndKeyCommand,
                $"{nameof(DatabaseTable)}/{nameof(SelectPropertyByTargetAndKeyCommand)}/{TableName}",
                HandleReaderSinglePropertyDataRow,
                target,
                key));
 }
コード例 #11
0
 public async ValueTask <long> InsertOrReplacePropertyAsync(
     IDbTransaction transaction,
     long target,
     string key,
     ReadOnlyMemory <byte> value,
     PropertyFeature?feature)
 {
     return((long)(await transaction.ExecuteScalarAsync(
                       () => InsertOrReplacePropertyCommand,
                       $"{nameof(DatabaseTable)}/{nameof(InsertOrReplacePropertyCommand)}/{TableName}",
                       target,
                       key,
                       value.ToArray(), // TODO: fix performance
                       feature)) !);
 }
コード例 #12
0
 public async ValueTask <long> InsertAsync(
     IDbTransaction transaction,
     string path,
     long?parent,
     bool isDirectory,
     string?identifierTag,
     string?contentTag)
 {
     return((long)(await transaction.ExecuteScalarAsync(
                       () => InsertCommand,
                       $"{nameof(DatabaseTable)}/{nameof(InsertCommand)}/{TableName}",
                       path,
                       parent,
                       isDirectory ? 1 : 0,
                       identifierTag,
                       contentTag)) !);
 }