From e6181c24124d97f2fbc932b8a68311e625463156 Mon Sep 17 00:00:00 2001 From: uzvkl Date: Tue, 11 Jun 2019 23:05:52 +0200 Subject: Move dsa related stuff to subfolder --- FireBase/Offline/DatabaseExtensions.cs | 257 --------------------------------- 1 file changed, 257 deletions(-) delete mode 100644 FireBase/Offline/DatabaseExtensions.cs (limited to 'FireBase/Offline/DatabaseExtensions.cs') diff --git a/FireBase/Offline/DatabaseExtensions.cs b/FireBase/Offline/DatabaseExtensions.cs deleted file mode 100644 index e7c4074..0000000 --- a/FireBase/Offline/DatabaseExtensions.cs +++ /dev/null @@ -1,257 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq.Expressions; -using System.Reflection; -using Firebase.Database.Query; - -namespace Firebase.Database.Offline -{ - public static class DatabaseExtensions - { - /// - /// Create new instances of the . - /// - /// Type of elements. - /// Custom string which will get appended to the file name. - /// Optional custom root element of received json items. - /// Realtime streaming options. - /// Specifies what strategy should be used for initial pulling of server data. - /// - /// Specifies whether changed items should actually be pushed to the server. It this is false, - /// then Put / Post / Delete will not affect server data. - /// - /// The . - public static RealtimeDatabase AsRealtimeDatabase(this ChildQuery query, string filenameModifier = "", - string elementRoot = "", StreamingOptions streamingOptions = StreamingOptions.LatestOnly, - InitialPullStrategy initialPullStrategy = InitialPullStrategy.MissingOnly, bool pushChanges = true) - where T : class - { - return new RealtimeDatabase(query, elementRoot, query.Client.Options.OfflineDatabaseFactory, - filenameModifier, streamingOptions, initialPullStrategy, pushChanges); - } - - /// - /// Create new instances of the . - /// - /// Type of elements. - /// Type of the custom to use. - /// Custom string which will get appended to the file name. - /// Optional custom root element of received json items. - /// Realtime streaming options. - /// Specifies what strategy should be used for initial pulling of server data. - /// - /// Specifies whether changed items should actually be pushed to the server. It this is false, - /// then Put / Post / Delete will not affect server data. - /// - /// The . - public static RealtimeDatabase AsRealtimeDatabase(this ChildQuery query, - string filenameModifier = "", string elementRoot = "", - StreamingOptions streamingOptions = StreamingOptions.LatestOnly, - InitialPullStrategy initialPullStrategy = InitialPullStrategy.MissingOnly, bool pushChanges = true) - where T : class - where TSetHandler : ISetHandler, new() - { - return new RealtimeDatabase(query, elementRoot, query.Client.Options.OfflineDatabaseFactory, - filenameModifier, streamingOptions, initialPullStrategy, pushChanges, - Activator.CreateInstance()); - } - - /// - /// Overwrites existing object with given key leaving any missing properties intact in firebase. - /// - /// The key. - /// The object to set. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Patch(this RealtimeDatabase db, string key, T obj, bool syncOnline = true, - int priority = 1) - where T : class - { - db.Set(key, obj, syncOnline ? SyncOptions.Patch : SyncOptions.None, priority); - } - - /// - /// Overwrites existing object with given key. - /// - /// The key. - /// The object to set. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Put(this RealtimeDatabase db, string key, T obj, bool syncOnline = true, - int priority = 1) - where T : class - { - db.Set(key, obj, syncOnline ? SyncOptions.Put : SyncOptions.None, priority); - } - - /// - /// Adds a new entity to the Database. - /// - /// The object to add. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - /// The generated key for this object. - public static string Post(this RealtimeDatabase db, T obj, bool syncOnline = true, int priority = 1) - where T : class - { - var key = FirebaseKeyGenerator.Next(); - - db.Set(key, obj, syncOnline ? SyncOptions.Put : SyncOptions.None, priority); - - return key; - } - - /// - /// Deletes the entity with the given key. - /// - /// The key. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Delete(this RealtimeDatabase db, string key, bool syncOnline = true, int priority = 1) - where T : class - { - db.Set(key, null, syncOnline ? SyncOptions.Put : SyncOptions.None, priority); - } - - /// - /// Do a Put for a nested property specified by of an object with key - /// . - /// - /// Type of the root elements. - /// Type of the property being modified - /// Database instance. - /// Key of the root element to modify. - /// Expression on the root element leading to target value to modify. - /// Value to put. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Put(this RealtimeDatabase db, string key, - Expression> propertyExpression, TProperty value, bool syncOnline = true, - int priority = 1) - where T : class - { - db.Set(key, propertyExpression, value, syncOnline ? SyncOptions.Put : SyncOptions.None, priority); - } - - /// - /// Do a Patch for a nested property specified by of an object with key - /// . - /// - /// Type of the root elements. - /// Type of the property being modified - /// Database instance. - /// Key of the root element to modify. - /// Expression on the root element leading to target value to modify. - /// Value to patch. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Patch(this RealtimeDatabase db, string key, - Expression> propertyExpression, TProperty value, bool syncOnline = true, - int priority = 1) - where T : class - { - db.Set(key, propertyExpression, value, syncOnline ? SyncOptions.Patch : SyncOptions.None, priority); - } - - /// - /// Delete a nested property specified by of an object with key - /// . This basically does a Put with null value. - /// - /// Type of the root elements. - /// Type of the property being modified - /// Database instance. - /// Key of the root element to modify. - /// Expression on the root element leading to target value to modify. - /// Value to put. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Delete(this RealtimeDatabase db, string key, - Expression> propertyExpression, bool syncOnline = true, int priority = 1) - where T : class - where TProperty : class - { - db.Set(key, propertyExpression, null, syncOnline ? SyncOptions.Put : SyncOptions.None, priority); - } - - /// - /// Post a new entity into the nested dictionary specified by of an object with - /// key . - /// The key of the new entity is automatically generated. - /// - /// Type of the root elements. - /// Type of the dictionary being modified - /// Type of the value within the dictionary being modified - /// Database instance. - /// Key of the root element to modify. - /// Expression on the root element leading to target value to modify. - /// Value to put. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Post(this RealtimeDatabase db, string key, - Expression> propertyExpression, TProperty value, bool syncOnline = true, - int priority = 1) - where T : class - where TSelector : IDictionary - { - var nextKey = FirebaseKeyGenerator.Next(); - var expression = Expression.Lambda>( - Expression.Call(propertyExpression.Body, - typeof(TSelector).GetRuntimeMethod("get_Item", new[] {typeof(string)}), - Expression.Constant(nextKey)), propertyExpression.Parameters); - db.Set(key, expression, value, syncOnline ? SyncOptions.Put : SyncOptions.None, priority); - } - - /// - /// Delete an entity with key in the nested dictionary specified by - /// of an object with key . - /// The key of the new entity is automatically generated. - /// - /// Type of the root elements. - /// Type of the dictionary being modified - /// Type of the value within the dictionary being modified - /// Database instance. - /// Key of the root element to modify. - /// Expression on the root element leading to target value to modify. - /// Key within the nested dictionary to delete. - /// Indicates whether the item should be synced online. - /// - /// The priority. Objects with higher priority will be synced first. Higher number indicates higher - /// priority. - /// - public static void Delete(this RealtimeDatabase db, string key, - Expression>> propertyExpression, string dictionaryKey, - bool syncOnline = true, int priority = 1) - where T : class - { - var expression = Expression.Lambda>( - Expression.Call(propertyExpression.Body, - typeof(IDictionary).GetRuntimeMethod("get_Item", new[] {typeof(string)}), - Expression.Constant(dictionaryKey)), propertyExpression.Parameters); - db.Set(key, expression, null, syncOnline ? SyncOptions.Put : SyncOptions.None, priority); - } - } -} \ No newline at end of file -- cgit v1.2.3-54-g00ecf