Пример #1
0
 public static DirectQueryLoader <T> Select <T>(this DirectQueryLoader <T> loader, string input) where T : DirectModel
 {
     input = input.Trim();
     using (var tempValue = (T)Activator.CreateInstance(typeof(T), (DirectDatabaseBase)loader.Database))
     {
         if (input.Equals("*"))
         {
             return(loader);
         }
         if (loader.Select.Equals("id"))
         {
             loader.Select = tempValue.IdName;
         }
         else if (!string.IsNullOrEmpty(input))
         {
             if (input.Contains("[id]"))
             {
                 input = input.Replace("[id]", tempValue.IdName);
             }
             loader.Select = tempValue.IdName + "," + input;
         }
         else
         {
             loader.Select = "*";
         }
     }
     return(loader);
 }
Пример #2
0
        //
        // LOAD BY ID (string)
        //

        internal static string ContructLoadByStringID <T>(this DirectQueryLoader <T> loader, string id) where T : DirectModel
        {
            return(string.Format(loader.Database.QueryContructLoadByStringID,
                                 loader.SelectQuery,
                                 loader.Instance.GetTableName(),
                                 loader.Instance.GetIdNameValue(), id));
        }
Пример #3
0
        //
        // LOAD BY WHERE
        //

        internal static string ContructLoad <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            return(string.Format(loader.Database.QueryContructLoad,
                                 loader.SelectQuery,
                                 loader.Instance.TableName,
                                 loader.WhereQuery,
                                 loader.Additional));
        }
Пример #4
0
 public static IEnumerable <T> LoadEnumerable <T>(this DirectQueryLoader <T> loader) where T : DirectModel
 {
     foreach (var row in loader.Database.Loader.LoadEnumerable <T>(loader.ContructLoad()))
     {
         row.Database = loader.Database;
         yield return(row);
     }
     yield break;
 }
Пример #5
0
 public static async IAsyncEnumerable <T> LoadEnumerableAsync <T>(this DirectQueryLoader <T> loader) where T : DirectModel
 {
     await foreach (var row in loader.Database.Loader.LoadEnumerableAsync <T>(loader.ContructLoad()))
     {
         row.SetDatabase(loader.Database);
         yield return(row);
     }
     yield break;
 }
Пример #6
0
        public static T LoadLater <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            using (var tempValue = (T)Activator.CreateInstance(typeof(T), (DirectDatabaseBase)null))
                loader.Select = tempValue.IdName;

            T temp = (T)Activator.CreateInstance(typeof(T), loader.Database);

            loader.Database.TransactionalManager.Load(temp, loader.ContructLoad());
            return(temp);
        }
Пример #7
0
        /// <summary>
        /// Loads dynamic object (values not selected will not be present)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="loader"></param>
        /// <returns></returns>
        public static async Task <dynamic> LoadDynamicAsync <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            string command = string.Format(loader.Database.QueryContructLoad,
                                           loader.SelectQuery,
                                           loader.Instance.GetTableName(),
                                           loader.WhereQuery,
                                           loader.Additional);

            return((await loader.Database.LoadAsync(command)).RawData);
        }
Пример #8
0
        public static T Load <T>(this DirectQueryLoader <T> loader, long id) where T : DirectModel
        {
            var data = loader.Database.LoadSingle <T>(loader.ContructLoadByID(id));

            if (data != null)
            {
                data.Database = loader.Database;
            }
            return(data);
        }
Пример #9
0
        public static T Load <T>(this DirectQueryLoader <T> loader, string query) where T : DirectModel
        {
            var result = loader.Database.LoadSingle <T>(query);

            if (result != null)
            {
                result.Snapshot.SetSnapshot();
                result.Database = loader.Database;
            }
            return(result);
        }
Пример #10
0
        public static T LoadByGuid <T>(this DirectQueryLoader <T> loader, string id) where T : DirectModel
        {
            var data = loader.Database.LoadSingle <T>(loader.ContructLoadByStringID(id));

            if (data != null)
            {
                data.Snapshot.SetSnapshot();
                data.Database = loader.Database;
            }
            return(data);
        }
Пример #11
0
        public static DirectQueryLoader <T> Where <T>(this DirectQueryLoader <T> loader, string input, params object[] parameters) where T : DirectModel
        {
            if (input.Contains("[id]"))
            {
                using (var tempValue = (T)Activator.CreateInstance(typeof(T), (DirectDatabaseBase)loader.Database))
                    input = input.Replace("[id]", tempValue.IdName);
            }

            loader.SetWhere(input, parameters);
            return(loader);
        }
Пример #12
0
        public static async Task <T> LoadAsync <T>(this DirectQueryLoader <T> loader, string query) where T : DirectModel
        {
            var data = await loader.Database.LoadSingleAsync <T>(query);;

            if (data != null)
            {
                data.Snapshot.SetSnapshot();
                data.SetDatabase(loader.Database);
            }
            return(data);
        }
Пример #13
0
        public static List <T> Load <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            List <T> result = new List <T>();

            foreach (var entry in LoadEnumerable <T>(loader))
            {
                entry.Snapshot.SetSnapshot();
                entry.Database = loader.Database;
                result.Add(entry);
            }
            return(result);
        }
Пример #14
0
        public static async Task <int> CountAsync <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            string command = string.Format(loader.Database.QueryCount,
                                           loader.Instance.GetTableName(),
                                           loader.WhereQuery);

            int?result = await loader.Database.LoadIntAsync(command);

            if (result.HasValue)
            {
                return(result.Value);
            }
            return(-1);
        }
Пример #15
0
        public static async Task <T> LoadByGuidAsync <T>(this DirectQueryLoader <T> loader, string id) where T : DirectModel
        {
            string command = string.Format(loader.Database.QueryContructLoadByStringID,
                                           loader.SelectQuery,
                                           loader.Instance.GetTableName(),
                                           loader.Instance.GetIdNameValue(), id);

            var data = await loader.Database.LoadSingleAsync <T>(command);

            if (data != null)
            {
                data.Snapshot.SetSnapshot();
                data.SetDatabase(loader.Database);
            }
            return(data);
        }
Пример #16
0
        /// <summary>
        /// Load single DirectModel async
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="loader"></param>
        /// <returns></returns>
        public static async Task <T> LoadSingleAsync <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            string command = string.Format(loader.Database.QueryLoadSingle,
                                           loader.SelectQuery,
                                           loader.Instance.GetTableName(),
                                           loader.WhereQuery);

            var data = await loader.Database.LoadSingleAsync <T>(command);

            if (data != null)
            {
                data.Snapshot.SetSnapshot();
                data.SetDatabase(loader.Database);
            }
            return(data);
        }
Пример #17
0
        public static T LoadSingle <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            string command = string.Format(loader.Database.QueryLoadSingle,
                                           loader.SelectQuery,
                                           loader.Instance.TableName,
                                           loader.WhereQuery);

            var data = loader.Database.LoadSingle <T>(command);

            if (data != null)
            {
                data.Snapshot.SetSnapshot();
                data.Database = loader.Database;
            }
            return(data);
        }
Пример #18
0
        public static async Task <List <T> > LoadAsync <T>(this DirectQueryLoader <T> loader) where T : DirectModel
        {
            string command = string.Format(loader.Database.QueryContructLoadWithLimitConstruct <T>(loader),
                                           loader.SelectQuery,
                                           loader.Instance.GetTableName(),
                                           loader.WhereQuery,
                                           loader.Additional);

            List <T> result = new List <T>();

            foreach (var row in await loader.Database.LoadAsync <T>(command))
            {
                row.Snapshot.SetSnapshot();
                row.SetDatabase(loader.Database);
                result.Add(row);
            }

            return(result);
        }
Пример #19
0
 public static DirectQueryLoader <T> Limit <T>(this DirectQueryLoader <T> loader, int input) where T : DirectModel
 {
     loader.Limit = input;
     return(loader);
 }
Пример #20
0
 public static DirectQueryLoader <T> Additional <T>(this DirectQueryLoader <T> loader, string input) where T : DirectModel
 {
     loader.Additional = input;
     return(loader);
 }
Пример #21
0
 public static T Load <T>(this DirectQueryLoader <T> loader, int id) where T : DirectModel
 => Load(loader, (long)id);