protected override async Task <IEnumerable <TModel> > SelectOperationAsync(IDbConnection dbConnection) { { if (SelectProxy is IIdentifiablesQuery identifiablesQuery) { IEnumerable <Field> fields = SelectProxy is IFieldableQuery <TModel> fieldableQuery?GetFieldableQueryResult(fieldableQuery) : null; return(await dbConnection.QueryAsync <TModel>(identifiablesQuery.Ids, fields, null, MaxSelectCount, Hints, Cacheable?.Key, Cacheable?.ItemExpiration, CommandTimeout, Transaction, Cacheable?.Cache, Trace, StatementBuilder)); } } { if (SelectProxy is ISearchableQuery <TModel> searchableQuery) { IReadOnlyLogbook searchableQueryLogs = searchableQuery.Build(out QueryGroup queryGroup); Logs.AddRange(searchableQueryLogs); if (searchableQueryLogs.Safely) { IEnumerable <Field> fields = SelectProxy is IFieldableQuery <TModel> fieldableQuery?GetFieldableQueryResult(fieldableQuery) : null; IEnumerable <OrderField> orderFields = SelectProxy is IOrderFieldableQuery <TModel> orderFieldableQuery?GetOrderFieldableQueryResult(orderFieldableQuery) : null; return(await dbConnection.QueryAsync <TModel>(queryGroup, fields, orderFields, MaxSelectCount, Hints, Cacheable?.Key, Cacheable?.ItemExpiration, CommandTimeout, Transaction, Cacheable?.Cache, Trace, StatementBuilder)); } } } return(null); }
protected override async Task <IEnumerable <TModel> > DeleteOperationAsync(IDbConnection dbConnection) { IEnumerable <TModel> selectedModels = null; { if (DeleteProxy is IIdentifiablesQuery identifiablesQuery) { IEnumerable <Field> fields = DeleteProxy is IFieldableQuery <TModel> fieldableQuery?GetFieldableQueryResult(fieldableQuery) : null; selectedModels = await dbConnection.QueryAsync <TModel>(identifiablesQuery.Ids, fields, null, null, Hints, Cacheable?.Key, Cacheable?.ItemExpiration, CommandTimeout, Transaction, Cacheable?.Cache, Trace, StatementBuilder); } } { if (DeleteProxy is ISearchableQuery <TModel> searchableQuery) { IReadOnlyLogbook searchableQueryLogs = searchableQuery.Build(out QueryGroup queryGroup); Logs.AddRange(searchableQueryLogs); if (searchableQueryLogs.Safely) { IEnumerable <Field> fields = DeleteProxy is IFieldableQuery <TModel> fieldableQuery?GetFieldableQueryResult(fieldableQuery) : null; IEnumerable <OrderField> orderFields = DeleteProxy is IOrderFieldableQuery <TModel> orderFieldableQuery?GetOrderFieldableQueryResult(orderFieldableQuery) : null; selectedModels = await dbConnection.QueryAsync <TModel>(queryGroup, fields, orderFields, null, Hints, Cacheable?.Key, Cacheable?.ItemExpiration, CommandTimeout, Transaction, Cacheable?.Cache, Trace, StatementBuilder); } } } if (!(selectedModels is null) && selectedModels.Count() > 0) { int deletedCount = await dbConnection.DeleteAllAsync(selectedModels, Hints, CommandTimeout, Transaction, Trace, StatementBuilder); } return(null); }
protected override async Task <TModel> UpdateOperationAsync(IDbConnection dbConnection) { object updateId = default; int updatedCount = 0; { if (UpdateProxy is ISearchableQuery <TModel> searchableQuery) { QueryGroup queryGroup = GetSearchableProxyResult(searchableQuery); IEnumerable <Field> fields = UpdateProxy is IFieldableQuery <TModel> fieldableQuery?GetFieldableQueryResult(fieldableQuery) : null; IEnumerable <OrderField> orderFields = UpdateProxy is IOrderFieldableQuery <TModel> orderFieldableQuery?GetOrderFieldableQueryResult(orderFieldableQuery) : null; if (!(queryGroup is null)) { TModel searchModel = await GetModelAsync(dbConnection, queryGroup, fields, orderFields); if (searchModel is null) { return(null); } if (UpdateProxy is IIdentifiableQuery identifiableQuery) { updateId = identifiableQuery.Id; updatedCount = await dbConnection.UpdateAsync(searchModel, updateId, fields, Hints, CommandTimeout, Transaction, Trace, StatementBuilder); } else { TModel updateModel = null; if (UpdateProxy is IModelableQuery <TModel> modelableQuery) { updateModel = GetModelableQueryResult(modelableQuery); } if (UpdateProxy is ISourceableQuery <TModel> sourceableModelQuery) { updateModel = GetSourceableQueryResult(sourceableModelQuery); } if (updateModel is null) { return(null); } updateId = updateModel.Id = searchModel.Id; updatedCount = await dbConnection.UpdateAsync(updateModel, fields, Hints, CommandTimeout, Transaction, Trace, StatementBuilder); } } } } { if (UpdateProxy is ISourceableQuery <TModel> sourceableModelQuery) { TModel sourceModel = GetSourceableQueryResult(sourceableModelQuery); if (sourceModel is null) { return(null); } IEnumerable <Field> fields = UpdateProxy is IFieldableQuery <TModel> fieldableQuery?GetFieldableQueryResult(fieldableQuery) : null; if (UpdateProxy is IIdentifiableQuery identifiableQuery) { updateId = identifiableQuery.Id; updatedCount = await dbConnection.UpdateAsync(sourceModel, updateId, fields, Hints, CommandTimeout, Transaction, Trace, StatementBuilder); } else { updateId = sourceModel.Id; updatedCount = await dbConnection.UpdateAsync(sourceModel, fields, Hints, CommandTimeout, Transaction, Trace, StatementBuilder); } } } { if (UpdateProxy is IModelableQuery <TModel> modelableQuery) { IReadOnlyLogbook modelableQueryLogs = modelableQuery.ModelQuery.Build(out TModel model); Logs.AddRange(modelableQueryLogs); if (!modelableQueryLogs.Safely && model is null) { return(null); } IEnumerable <Field> fields = UpdateProxy is IFieldableQuery <TModel> fieldableQuery?GetFieldableQueryResult(fieldableQuery) : null; if (UpdateProxy is IIdentifiableQuery identifiableQuery) { updateId = identifiableQuery.Id; updatedCount = await dbConnection.UpdateAsync(model, updateId, fields, Hints, CommandTimeout, Transaction, Trace, StatementBuilder); } else { updateId = model.Id; updatedCount = await dbConnection.UpdateAsync(model, fields, Hints, CommandTimeout, Transaction, Trace, StatementBuilder); } } } if (updatedCount > 0) { return(await GetModelAsync(dbConnection, updateId)); } return(null); }
public static void WriteToFile(this IReadOnlyLogbook logs, string filePath) { var fileStream = File.Open(filePath, FileMode.OpenOrCreate); StringWriter stringWriter = new StringWriter(); }