public static async Task <bool> CheckStructure(this IRdbmsDataAccessor dataAccessor, IEnumerable <Type> types)
        {
            var checker = new StructureChecker(dataAccessor, types);
            await checker.CheckStructureAsync();

            return(true);
        }
Exemplo n.º 2
0
        public static List <CustomObject> LoadRaw(IRdbmsDataAccessor rda, CustomForm cf, IDictionary <String, Object> conditions = null, int?p = 1, int?l = 200)
        {
            var tableName = GetPrefixedTableName(ref cf);

            DataTable results = rda.Query(BuildSelectQuery(cf, conditions, p, l));
            var       retv    = new List <CustomObject>();

            for (var i = 0; i < results.Rows.Count; i++)
            {
                CustomObject co = new CustomObject();
                co.Set("Id", results.Rows[i]["Id"]);
                for (var a = 0; a < cf.Fields.Count; a++)
                {
                    co.Set(cf.Fields[a].Name, results.Rows[i][cf.Fields[a].Name]);
                }
                co.Set("RID", results.Rows[i]["RID"]);
                if (co.Get("RID") == null)
                {
                    co.Set("RID", IntEx.GenerateUniqueRID());
                }

                retv.Add(co);
            }

            return(retv);
        }
 public static IEnumerable <T> Fetch <T>(this IRdbmsDataAccessor self, BDadosTransaction transaction, Expression <Func <T, bool> > conditions = null, int?skip = null, int?limit = null, Expression <Func <T, object> > orderingMember = null, OrderingType ordering = OrderingType.Asc)
     where T : IDataObject, new()
 {
     return(self.LoadAll <T>(
                transaction,
                Core.Interfaces.LoadAll.Where <T>(conditions)
                .Skip(skip)
                .Limit(limit)
                .OrderBy(orderingMember, ordering)
                ));
 }
 public static List <T> AggregateLoad <T>(this IRdbmsDataAccessor self, BDadosTransaction transaction, Expression <Func <T, bool> > conditions = null, int?skip = null, int?limit = null, Expression <Func <T, object> > orderingMember = null, OrderingType ordering = OrderingType.Asc, MemberInfo GroupingMember = null, bool Linear = false)
     where T : IDataObject, new()
 {
     return(self.AggregateLoad <T>(
                transaction,
                Core.Interfaces.LoadAll.Where <T>(conditions)
                .Skip(skip)
                .Limit(limit)
                .OrderBy(orderingMember, ordering)
                .GroupBy(GroupingMember)
                .LinearIf(Linear)
                ));
 }
Exemplo n.º 5
0
        public static void Save(IRdbmsDataAccessor rda, CustomForm cf, CustomObject value)
        {
            var    tableName = GetPrefixedTableName(ref cf);
            Object getId     = value.Get("Id");

            if (getId is long && (long)getId > 0)
            {
                rda.Execute(BuildUpdateQuery(cf, value));
            }
            else
            {
                rda.Execute(BuildInsertQuery(cf, value));
            }
        }
Exemplo n.º 6
0
        public static void CheckStructure(IRdbmsDataAccessor da, CustomForm form)
        {
            var tableName = GetPrefixedTableName(ref form);

            //
            DataTable schemaInfo = da.Query(
                new Qb($"SELECT * FROM information_schema.tables WHERE table_schema='{da.SchemaName}' AND table_name='{tableName}'"));

            // Se a tabela não existir, criar
            if (schemaInfo.Rows.Count < 1)
            {
                var creationQuery = BuildCreationQuery(form);
                da.Execute(creationQuery);
            }
            else
            {
                DataTable columnsInfo = da.Query(
                    new Qb($"SELECT * FROM information_schema.columns WHERE table_schema='{da.SchemaName}' AND table_name='{tableName}'"));

                for (var i = 0; i < form.Fields.Count; i++)
                {
                    bool exists = false;
                    int  cIndex = -1;
                    for (var c = 0; c < columnsInfo.Rows.Count; c++)  // C++!!!
                    {
                        if (columnsInfo.Rows[c]["COLUMN_NAME"] as String == form.Fields[i].Name)
                        {
                            exists = true;
                            cIndex = c;
                            break;
                        }
                    }
                    if (!exists)
                    {
                        da.Execute(new Qb($"ALTER TABLE {tableName} ADD COLUMN {SqlType(form.Fields[i])} DEFAULT NULL;"));
                    }
                    else
                    {
                        ulong? sz     = (ulong?)columnsInfo.Rows[cIndex]["CHARACTER_MAXIMUM_LENGTH"];
                        String dbtype = (String)columnsInfo.Rows[cIndex]["DATA_TYPE"];
                        if (dbtype.ToLower() == "varchar" && sz != (ulong)form.Fields[i].Size)
                        {
                            da.Execute(new Qb($"ALTER TABLE {tableName} CHANGE COLUMN {form.Fields[i].Name} {form.Fields[i].Name} {SqlType(form.Fields[i])} DEFAULT NULL"));
                        }
                    }
                }
            }
        }
Exemplo n.º 7
0
        public static Object LoadByRid(IRdbmsDataAccessor rda, CustomForm cf, String rid)
        {
            DataTable results = rda.Query(BuildSelectByRidQuery(cf, rid));
            var       retv    = new List <CustomObject>();

            for (var i = 0; i < results.Rows.Count; i++)
            {
                CustomObject co = new CustomObject();
                co.Set("Id", results.Rows[i]["Id"]);
                for (var a = 0; a < cf.Fields.Count; a++)
                {
                    co.Set(cf.Fields[a].Name, results.Rows[i][cf.Fields[a].Name]);
                }
                co.Set("RID", results.Rows[i]["RID"]);
                if (co.Get("RID") == null)
                {
                    co.Set("RID", IntEx.GenerateUniqueRID());
                }

                return(co.Refine());
            }

            return(null);
        }
Exemplo n.º 8
0
 public static List <Object> Load(IRdbmsDataAccessor rda, CustomForm cf, IDictionary <String, Object> conditions = null, int?p = 1, int?l = 200)
 {
     return(LoadRaw(rda, cf, conditions, p, l).Select((co) => co.Refine()).ToList());
 }
 public static async Task <bool> CheckStructure(this IRdbmsDataAccessor dataAccessor, Assembly ass)
 {
     return(await CheckStructure(dataAccessor, ReflectionTool.GetLoadableTypesFrom(ass)));
 }
Exemplo n.º 10
0
 public static int Execute(this IRdbmsDataAccessor self, BDadosTransaction transaction, string query, params object[] args)
 {
     return(self.Execute(transaction, (IQueryBuilder)Qb.Fmt(query, args)));
 }
Exemplo n.º 11
0
 public static DataTable Query(this IRdbmsDataAccessor self, BDadosTransaction transaction, string query, params object[] args)
 {
     return(self.Query(transaction, Qb.Fmt(query, args)));
 }
Exemplo n.º 12
0
 public static DataTable Query(this IRdbmsDataAccessor self, string query, params object[] args)
 {
     return(self.Query(Qb.Fmt(query, args)));
 }
Exemplo n.º 13
0
 public static List <T> Query <T>(this IRdbmsDataAccessor self, BDadosTransaction transaction, string query, params object[] args) where T : IDataObject, new()
 {
     return(self.Query <T>(transaction, (IQueryBuilder)Qb.Fmt(query, args)));
 }
Exemplo n.º 14
0
 public static List <T> LoadAll <T>(this IRdbmsDataAccessor self, BDadosTransaction transaction, string query, params object[] args) where T : IDataObject, new()
 {
     return(self.LoadAll(transaction, (IQueryBuilder)Qb.Fmt(query, args), (int?)null, (int?)null, (Expression <Func <T, object> >)null, OrderingType.Asc, (object)null));
 }