public All ( string where = "", string orderBy = "", int limit, string columns = "*" ) : IEnumerable |
||
where | string | |
orderBy | string | |
limit | int | |
columns | string | |
return | IEnumerable |
public static void ScrapeChannels(object args) { if (Interlocked.CompareExchange(ref Running, 1, 0) != 0) return; try { if (String.IsNullOrEmpty(downloadDir)) { string dir = ConfigurationManager.AppSettings["torrentsdir"]; if (!String.IsNullOrEmpty(dir)) { var context = args as HttpContextBase; if (Path.IsPathRooted(dir) == false && context != null) dir = context.Server.MapPath(dir); if (Directory.Exists(dir)) downloadDir = dir; else downloadDir = Environment.CurrentDirectory; } } var table = new DynamicModel("LDSTorrents", tableName: "Channels", primaryKeyField: "ChannelID"); var channels = table.All(); foreach (var channel in channels) { try { logger.InfoFormat("Scraping '{0}'...", channel.Title); var videos = ScrapeChannel(channel); Torrents.Save(videos.ToArray()); table.Update(new { LastUpdated = DateTime.Now }, channel.ChannelID); } catch (Exception ex) { logger.Error(String.Format("Failed to scrape channel '{0}' with the following exception: ", channel.Title), ex); ErrorLog.GetDefault(null).Log(new Error(ex)); } #if DEBUG break; #endif } } catch (Exception ex) { logger.Error("ScrapeChannels failed with the following exception: ", ex); ErrorLog.GetDefault(null).Log(new Error(ex)); } Interlocked.Exchange(ref Running, 0); }
public static void Export(ExportArguments exportArgs) { var connStrBuilder = new MySqlConnectionStringBuilder { Server = exportArgs.Server, UserID = exportArgs.User, Password = exportArgs.Password, Database = exportArgs.Database }; var model = new DynamicModel(connStrBuilder.ConnectionString, exportArgs.Table); IEnumerable<dynamic> records = exportArgs.UseQuery ? model.Query(exportArgs.Query) : model.All(); string json = JsonConvert.SerializeObject(records); Console.WriteLine(json); }
private static void BasicQuery() { /* initialize dynamic model */ var tbl = new DynamicModel("MyConnection", tableName: "Customers", primaryKeyField: "CustomerID"); /* retrieve all records */ var customers = tbl.All(); /* iterate over result set */ foreach (var customer in customers) { Console.WriteLine("{0} {1} {2} {3}", customer.Title, customer.FirstName, customer.LastName, customer.Suffix); } /* pause output */ Console.ReadLine(); }
private static void ScrapeChannels() { var table = new DynamicModel("LDSTorrents", tableName: "Channels", primaryKeyField: "ChannelID"); var channels = table.All(); foreach (var channel in channels) { Console.WriteLine("Scraping '{0}'...", channel.Title); var videos = ScrapeChannel(channel); Torrents.Save(videos.ToArray()); table.Update(new { LastUpdated = DateTime.Now }, channel.ChannelID); break; } }
public PagedRecords GetRecords( Entity entity, IList<BaseFilter> filters = null, string searchQuery = null, string order = null, string orderDirection = null, bool determineDisplayValue = false, int? page = null, int? take = null) { var search = new EntitySearch { Query = searchQuery, Properties = entity.SearchProperties }; order = order.IsNullOrEmpty() ? entity.Key.FirstOrDefault().ColumnName : order; orderDirection = orderDirection.IsNullOrEmpty() ? "ASC" : orderDirection.ToUpper(); var orderBy = order + " " + orderDirection; var columns = string.Join(",", entity.Properties .Where(x => !x.IsForeignKey || (!x.TypeInfo.IsCollection && x.IsForeignKey)) .Select(x => x.ColumnName) .Distinct()); List<object> args; var where = ConvertFiltersToSql(filters, search, out args); var table = new DynamicModel( Admin.ConnectionStringName, entity.TableName, entity.JoinedKey); if (page.HasValue && take.HasValue) { var result = table.Paged( columns: columns, where: where, orderBy: orderBy, currentPage: page.Value, pageSize: take.Value, args: args.ToArray()); var data = new List<DataRow>(); foreach (var item in result.Items) { data.Add(new DataRow(item, entity)); } return new PagedRecords { TotalItems = result.TotalRecords, TotalPages = result.TotalPages, Records = data }; } else { var result = table.All( columns: columns, where: where, orderBy: orderBy, args: args.ToArray()); var data = result .Select(item => new DataRow(item, entity)) .ToList(); if (determineDisplayValue) { foreach (var row in data) { row.DisplayName = entity.ToString(row); } } return new PagedRecords { Records = data }; } }
public PagedRecords GetRecords( Entity entity, IList<BaseFilter> filters = null, string searchQuery = null, string order = null, string orderDirection = null, bool determineDisplayValue = false, int? page = null, int? take = null, bool loadForeignKeys = false) { var search = new EntitySearch { Query = searchQuery, Properties = entity.SearchProperties }; order = order.IsNullOrEmpty() ? entity.Keys.FirstOrDefault().Column : order; orderDirection = orderDirection.IsNullOrEmpty() ? "ASC" : orderDirection.ToUpper(); var orderBy = order + " " + orderDirection; var columns = string.Join(",", entity.DisplayProperties .Union(entity.Keys) .Where(x => !x.IsForeignKey || (!x.TypeInfo.IsCollection && x.IsForeignKey)) .Select(x => $"{entity.Table}.{x.Column} as {x.Column}") .Distinct()); List<object> args; var where = ConvertFiltersToSql(filters, search, out args); var table = new DynamicModel( _admin.ConnectionStringName, entity.Table, entity.JoinedKeys); if (page.HasValue && take.HasValue) { var result = table.Paged( columns: columns, where: where, orderBy: orderBy, currentPage: page.Value, pageSize: take.Value, args: args.ToArray()); var records = new List<EntityRecord>(); foreach (var item in result.Items) { records.Add(entity.CreateRecord((Dictionary<string, object>)item)); } return new PagedRecords { TotalItems = result.TotalRecords, TotalPages = result.TotalPages, Records = records }; } else { var joins = ""; if (loadForeignKeys) { foreach (var foreignKey in entity.ForeignKeys.WhereOneToMany()) { var joinTable = foreignKey.ForeignEntity.Table; var joinProperty = foreignKey.ForeignEntity.Keys.FirstOrDefault(x => x.ForeignEntity == entity); var keyProperty = foreignKey.TypeInfo.IsCollection ? entity.Keys.FirstOrDefault() : foreignKey; joins += Environment.NewLine + $"left join {joinTable} on {joinTable}.{joinProperty.Column} = {entity.Table}.{keyProperty.Column}"; var propertyToGet = foreignKey.ForeignEntity.Keys.FirstOrDefault(x => x.ForeignEntity != entity) ?? joinProperty; columns += $",{joinTable}.{propertyToGet.Column} as {foreignKey.Column}"; } } var result = table.All( columns: columns, joins: joins, where: where, orderBy: orderBy, args: args.ToArray()); var records = result .Select(item => entity.CreateRecord(item)) .ToList(); return new PagedRecords { Records = records }; } }
public IList<DataRow> GetRecords( Entity entity, IList<IEntityFilter> filters = null, string searchQuery = null, string order = null, string orderDirection = null, bool determineDisplayValue = false) { var search = new EntitySearch { Query = searchQuery, Properties = entity.SearchProperties }; order = order.IsNullOrEmpty() ? entity.Key.ColumnName : order; orderDirection = orderDirection.IsNullOrEmpty() ? "ASC" : orderDirection.ToUpper(); var orderBy = order + " " + orderDirection; var columns = string.Join(",", entity.Properties .Where(x => !x.IsForeignKey || (!x.TypeInfo.IsCollection && x.IsForeignKey)) .Select(x => x.ColumnName) .Distinct()); List<object> args; var where = ConvertFiltersToSql(filters, search, out args); var table = new DynamicModel( AdminInitialise.ConnectionStringName, entity.TableName, entity.Key.ColumnName); var result = table.All( columns: columns, where: where, orderBy: orderBy, args: args.ToArray()); var data = result .Select(item => new DataRow(item, entity)) .ToList(); if (determineDisplayValue) { foreach (var row in data) { row.DisplayName = entity.ToString(row); } } return data; }