public override async Task <List <T> > SelectAll(Expression <Func <T, bool> > @where, Expression <Func <T, object> > orderByColumn = null, bool isAscending = true, bool isIncludeDeleted = false)
        {
            var sb = new StringBuilder();

            sb.Append($"{SQLConstants.SELECT} *{Environment.NewLine}");
            sb.Append($"{SQLConstants.FROM} {_sqlConstants.TableFullName}{Environment.NewLine}");

            var orderColumn = _sqlConstants.IdFieldName;

            if (orderByColumn != null)
            {
                orderColumn = _expressionUtils.GetField(orderByColumn.Body);
            }

            var ascOrDesc = SQLConstants.DESC;

            if (isAscending)
            {
                ascOrDesc = SQLConstants.ASC;
            }

            var parameters = new List <NpgsqlParameter>();

            AppendWhere(where, parameters, sb, isIncludeDeleted);
            sb.Append($"{SQLConstants.ORDER_BY} {orderColumn} {ascOrDesc}{Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
Esempio n. 2
0
        public override async Task <List <T> > SelectMany(Expression <Func <T, bool> > where, int skip = 0, int take = 100, bool isIncludeDeleted = false,
                                                          List <OrderByInfo <T> > orderByInfos         = null)
        {
            var sb = GetStringBuilderWithSelectFrom();

            var parameters = new List <NpgsqlParameter>();
            var prmSkip    = new NpgsqlParameter <int>(SQLConstants.SKIP_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = skip
            };

            parameters.Add(prmSkip);
            var prmTake = new NpgsqlParameter <int>(SQLConstants.TAKE_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = take
            };

            parameters.Add(prmTake);
            AppendWhere(where, parameters, sb, isIncludeDeleted);

            AppendOrderByFields(orderByInfos, sb);

            sb.Append($"{PostgreSQLConstants.LIMIT} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.TAKE_PARAMETER_NAME} {PostgreSQLConstants.OFFSET} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.SKIP_PARAMETER_NAME} {Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
Esempio n. 3
0
        public override async Task <List <T> > SelectAll(Expression <Func <T, bool> > where, bool isIncludeDeleted = false, List <OrderByInfo <T> > orderByInfos = null)
        {
            var sb = GetStringBuilderWithSelectFrom();

            var parameters = new List <NpgsqlParameter>();

            AppendWhere(where, parameters, sb, isIncludeDeleted);

            AppendOrderByFields(orderByInfos, sb);

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
Esempio n. 4
0
        public override async Task <List <T> > SelectAfter(Expression <Func <T, bool> > where, Guid lastUid, int take = 100, bool isIncludeDeleted = false,
                                                           List <OrderByInfo <T> > orderByInfos = null)
        {
            var sb = GetStringBuilderWithSelectFrom();

            var parameters = new List <NpgsqlParameter>();
            var prmTake    = new NpgsqlParameter <int>(SQLConstants.TAKE_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = take
            };

            parameters.Add(prmTake);

            AppendWhere(where, parameters, sb, isIncludeDeleted);

            if (lastUid != Guid.Empty)
            {
                var prmLastUid = new NpgsqlParameter <Guid>(SQLConstants.LAST_UID_PARAMETER_NAME, NpgsqlDbType.Uuid)
                {
                    TypedValue = lastUid
                };
                parameters.Add(prmLastUid);

                var schemaName = _entityUtils.GetSchemaName(typeof(T));
                var tableName  = _entityUtils.GetTableName(typeof(T));

                if (where == null && isIncludeDeleted)
                {
                    sb.Append($"{SQLConstants.WHERE}");
                }
                else
                {
                    sb.Append($" {SQLConstants.AND}");
                }

                sb.Append($" {_sqlConstants.IdFieldName} > ({SQLConstants.SELECT} {tableName}_id {SQLConstants.FROM} {schemaName}.{tableName} {SQLConstants.WHERE} {tableName}_uid = {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.LAST_UID_PARAMETER_NAME}){Environment.NewLine}");
            }

            AppendOrderByFields(orderByInfos, sb);

            sb.Append($"{PostgreSQLConstants.LIMIT} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.TAKE_PARAMETER_NAME} {PostgreSQLConstants.OFFSET} 0{Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
        public override async Task <List <T> > SelectMany(Expression <Func <T, bool> > @where, int skip = 0, int take            = 100,
                                                          Expression <Func <T, object> > orderByColumn  = null, bool isAscending = true, bool isIncludeDeleted = false)
        {
            var sb = new StringBuilder();

            sb.Append($"{SQLConstants.SELECT} *{Environment.NewLine}");
            sb.Append($"{SQLConstants.FROM} {_sqlConstants.TableFullName}{Environment.NewLine}");

            var orderColumn = _sqlConstants.IdFieldName;

            if (orderByColumn != null)
            {
                orderColumn = _expressionUtils.GetField(orderByColumn.Body);
            }

            var ascOrDesc = SQLConstants.DESC;

            if (isAscending)
            {
                ascOrDesc = SQLConstants.ASC;
            }

            var parameters = new List <NpgsqlParameter>();
            var prmSkip    = new NpgsqlParameter <int>(SQLConstants.SKIP_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = skip
            };

            parameters.Add(prmSkip);
            var prmTake = new NpgsqlParameter <int>(SQLConstants.TAKE_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = take
            };

            parameters.Add(prmTake);

            AppendWhere(where, parameters, sb, isIncludeDeleted);
            sb.Append($"{SQLConstants.ORDER_BY} {orderColumn} {ascOrDesc}{Environment.NewLine}");
            sb.Append($"{PostgreSQLConstants.LIMIT} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.TAKE_PARAMETER_NAME} {PostgreSQLConstants.OFFSET} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.SKIP_PARAMETER_NAME} {Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
        public override async Task <List <T> > SelectAfter(Expression <Func <T, bool> > @where, Guid lastUid, int take = 100,
                                                           Expression <Func <T, object> > orderByColumn = null, bool isAscending = true, bool isIncludeDeleted = false)
        {
            var sb = new StringBuilder();

            sb.Append($"{SQLConstants.SELECT} *{Environment.NewLine}");
            sb.Append($"{SQLConstants.FROM} {_sqlConstants.TableFullName}{Environment.NewLine}");

            var orderColumn = _sqlConstants.IdFieldName;

            if (orderByColumn != null)
            {
                orderColumn = _expressionUtils.GetField(orderByColumn.Body);
            }

            var ascOrDesc = SQLConstants.DESC;

            if (isAscending)
            {
                ascOrDesc = SQLConstants.ASC;
            }

            var parameters = new List <NpgsqlParameter>();
            var prmTake    = new NpgsqlParameter <int>(SQLConstants.TAKE_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = take
            };

            parameters.Add(prmTake);

            AppendWhere(where, parameters, sb, isIncludeDeleted);

            if (lastUid != Guid.Empty)
            {
                var prmLastUid = new NpgsqlParameter <Guid>(SQLConstants.LAST_UID_PARAMETER_NAME, NpgsqlDbType.Uuid)
                {
                    TypedValue = lastUid
                };
                parameters.Add(prmLastUid);

                var schemaName = _entityUtils.GetSchemaName(typeof(T));
                var tableName  = _entityUtils.GetTableName(typeof(T));

                if (where == null && isIncludeDeleted)
                {
                    sb.Append($"{SQLConstants.WHERE}");
                }
                else
                {
                    sb.Append($" {SQLConstants.AND}");
                }

                sb.Append($" {_sqlConstants.IdFieldName} > ({SQLConstants.SELECT} {tableName}_id {SQLConstants.FROM} {schemaName}.{tableName} {SQLConstants.WHERE} {tableName}_uid = {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.LAST_UID_PARAMETER_NAME}){Environment.NewLine}");
            }

            sb.Append($"{SQLConstants.ORDER_BY} {orderColumn} {ascOrDesc}{Environment.NewLine}");
            sb.Append($"{PostgreSQLConstants.LIMIT} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.TAKE_PARAMETER_NAME} {PostgreSQLConstants.OFFSET} 0{Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }
Esempio n. 7
0
        public override async Task <List <T> > SelectAfter(Expression <Func <T, bool> > @where, long lastId, int take = 100,
                                                           Expression <Func <T, object> > orderByColumn = null, bool isAscending = true, bool isIncludeDeleted = false)
        {
            var sb = new StringBuilder();

            sb.Append($"{SQLConstants.SELECT} *{Environment.NewLine}");
            sb.Append($"{SQLConstants.FROM} {_sqlConstants.TableFullName}{Environment.NewLine}");

            List <string> orderColumns = new List <string>();

            if (orderByColumn != null)
            {
                var body = orderByColumn.Body as NewExpression;
                if (body is null)
                {
                    orderColumns.Add(_expressionUtils.GetField(orderByColumn.Body));
                }
                else
                {
                    for (int i = 0; i < body.Arguments.Count; i++)
                    {
                        orderColumns.Add(_expressionUtils.GetField(body.Arguments[i]));
                    }
                }
            }
            else
            {
                orderColumns.Add(_sqlConstants.IdFieldName);
            }

            var ascOrDesc = SQLConstants.DESC;

            if (isAscending)
            {
                ascOrDesc = SQLConstants.ASC;
            }

            var parameters = new List <NpgsqlParameter>();
            var prmTake    = new NpgsqlParameter <int>(SQLConstants.TAKE_PARAMETER_NAME, NpgsqlDbType.Integer)
            {
                TypedValue = take
            };

            parameters.Add(prmTake);

            AppendWhere(where, parameters, sb, isIncludeDeleted);

            sb.Append($" {SQLConstants.AND} {_sqlConstants.IdFieldName} > {lastId}{Environment.NewLine}");

            sb.Append($"{SQLConstants.ORDER_BY} ");
            for (int i = 0; i < orderColumns.Count; i++)
            {
                sb.Append($"{orderColumns[i]} {ascOrDesc}");
                if (i != orderColumns.Count - 1)
                {
                    sb.Append(", ");
                }
            }
            sb.Append($"{Environment.NewLine}");

            sb.Append($"{PostgreSQLConstants.LIMIT} {PostgreSQLConstants.PARAMETER_PRESIGN}{SQLConstants.TAKE_PARAMETER_NAME} {PostgreSQLConstants.OFFSET} 0{Environment.NewLine}");

            var items = await SQLExecutor.ExecuteSqlReturningEntityList <T>(sb.ToString(), parameters);

            return(items);
        }