Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        public static void WriteToFile(this IReadOnlyLogbook logs, string filePath)
        {
            var fileStream = File.Open(filePath, FileMode.OpenOrCreate);

            StringWriter stringWriter = new StringWriter();
        }