/// <summary> /// Add non-unique index to store. /// </summary> /// <param name="store">IndexedDb Store</param> /// <param name="name"></param> /// <returns>Given IndexedDbStore Instance</returns> public static IndexedDbStore AddIndex(this IndexedDbStore store, string name) { return(store.CreateIndex(name, new IndexedDbIndexParameter() { Unique = false })); }
private static IndexedDbStore CreateKey(this IndexedDbStore store, string name, bool autoIncrement) { store.Key = new IndexedDbStoreParameter { KeyPath = name.ToCamelCase(), AutoIncrement = autoIncrement }; return(store); }
/// <summary> /// Creates a new IndexedDbStore and adds it to the Database Model /// </summary> /// <param name="model"></param> /// <param name="name"></param> /// <returns></returns> public static IndexedDbStore AddStore(this IndexedDbDatabaseModel model, string name) { model.Stores ??= new List <IndexedDbStore>(); var store = new IndexedDbStore { Name = name }; model.Stores.Add(store); return(store); }
/// <summary> /// Adds a new store named TEntity.Name and adds Key and Indexes based on IndexedDbKey and IndexedDbIndex Attributes /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="model"></param> /// <returns></returns> public static IndexedDbStore AddStore <TEntity>(this IndexedDbDatabaseModel model) { model.Stores ??= new List <IndexedDbStore>(); var store = new IndexedDbStore { Name = typeof(TEntity).Name }; store.SetupFrom <TEntity>(); model.Stores.Add(store); return(store); }
private static IndexedDbStore CreateIndex(this IndexedDbStore store, string name, IndexedDbIndexParameter definition) { store.Indexes ??= new List <IndexedDbIndex>(); var index = new IndexedDbIndex { Name = name.ToCamelCase(), Definition = definition }; store.Indexes.Add(index); return(store); }
/// <summary> /// Creates a new IndexedDbStore and adds it to the Database Model /// </summary> /// <param name="model"></param> /// <param name="name"></param> /// <returns></returns> public static IndexedDbStore AddStore(this IndexedDbDatabaseModel model, string name) { if (model.Stores == null) { model.Stores = new List <IndexedDbStore>(); } var store = new IndexedDbStore(); store.Name = name; model.Stores.Add(store); return(store); }
private static IndexedDbStore CreateIndex(this IndexedDbStore store, string name, IndexedDbIndexParameter definition) { if (store.Indexes == null) { store.Indexes = new List <IndexedDbIndex>(); } var index = new IndexedDbIndex(); index.Name = name.ToCamelCase(); index.Definition = definition; store.Indexes.Add(index); return(store); }
/// <summary> /// Adds a new store and adds Key and Indexes based on IndexedDbKey and IndexedDbIndex Attributes /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="model"></param> /// <param name="storeName"></param> /// <returns></returns> public static IndexedDbStore AddStore <TEntity>(this IndexedDbDatabaseModel model, string storeName) { if (model.Stores == null) { model.Stores = new List <IndexedDbStore>(); } var store = new IndexedDbStore(); store.Name = storeName; store.SetupFrom <TEntity>(); model.Stores.Add(store); return(store); }
/// <summary> /// Adds Key and Indexes to Store based on IndexedDbKey and IndexedDbIndex Attributes on properties in Type T /// </summary> /// <typeparam name="T"></typeparam> /// <param name="store"></param> /// <returns></returns> public static IndexedDbStore SetupFrom <T>(this IndexedDbStore store) { store.Indexes = null; var type = typeof(T); var props = type.GetProperties(); foreach (var prop in props) { var keyAttribute = prop.GetCustomAttribute <IndexDbKeyAttribute>(); var indexAttribute = prop.GetCustomAttribute <IndexDbIndexAttribute>(); if (keyAttribute is not null) { store.CreateKey(prop.Name, keyAttribute.AutoIncrement); store.CreateIndex(prop.Name, new IndexedDbIndexParameter() { Unique = keyAttribute.Unique }); } if (indexAttribute is not null) { store.CreateIndex(prop.Name, new IndexedDbIndexParameter() { Unique = indexAttribute.Unique }); } } if (store.Key == null) { throw new System.Exception($"No IndexDbKey Found on Property Attributes in Class {type.Name}"); } return(store); }
/// <summary> /// Add auto-incrementing key to store. /// </summary> /// <param name="store">IndexedDb Store</param> /// <param name="name"></param> /// <returns>Given IndexedDbStore Instance</returns> public static IndexedDbStore WithAutoIncrementingKey(this IndexedDbStore store, string name) { return(store.CreateKey(name, autoIncrement: true)); }