Exemplo n.º 1
0
 public static async Task StoreUsers(IEnumerable <UserInsertBatch> batches)
 {
     try
     {
         await StatusCrud.StoreCoreAsync(batches.SelectMany(CreateQuery));
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine("# FAIL> storing users." + Environment.NewLine + ex);
     }
 }
Exemplo n.º 2
0
        public static void Initialize(IDatabaseConnectionDescriptor descriptor)
        {
            System.Diagnostics.Debug.WriteLine("Krile DB Initializing...");
            if (_isInitialized)
            {
                throw new InvalidOperationException("Database core is already initialized.");
            }
            _isInitialized = true;
            _descriptor    = descriptor;

            // register sqlite functions
            var asm = Assembly.GetExecutingAssembly();

            asm.DefinedTypes.Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(SQLiteFunction)))
            .Where(t => t.GetCustomAttribute <SQLiteFunctionAttribute>() != null)
            .ForEach(t =>
            {
                try
                {
                    SQLiteFunction.RegisterFunction(t);
                }
                catch
                {
                }
            });

            // initialize tables
            var tasks = new Task[] { };

            Task.WaitAll(Task.Factory.StartNew(() =>
            {
                tasks = new[]
                {
                    AccountInfoCrud.InitializeAsync(descriptor),
                    StatusCrud.InitializeAsync(descriptor),
                    StatusEntityCrud.InitializeAsync(descriptor),
                    UserCrud.InitializeAsync(descriptor),
                    UserDescriptionEntityCrud.InitializeAsync(descriptor),
                    UserUrlEntityCrud.InitializeAsync(descriptor),
                    ListCrud.InitializeAsync(descriptor),
                    ListUserCrud.InitializeAsync(descriptor),
                    FavoritesCrud.InitializeAsync(descriptor),
                    RetweetsCrud.InitializeAsync(descriptor),
                    RelationCrud.InitializeAsync(descriptor),
                    ManagementCrud.InitializeAsync(descriptor)
                };
            }));
            Task.WaitAll(tasks);
        }
Exemplo n.º 3
0
 public static async Task StoreStatuses(IEnumerable <StatusInsertBatch> batches)
 {
     try
     {
         var m           = batches.Memoize();
         var statusBatch = m.Distinct(b => b.Status.Id)
                           .SelectMany(CreateQuery);
         var userBatch = m.Select(b => b.UserInsertBatch)
                         .Distinct(u => u.User.Id)
                         .SelectMany(CreateQuery);
         await StatusCrud.StoreCoreAsync(statusBatch.Concat(userBatch));
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine("# FAIL> storing statuses." + Environment.NewLine + ex);
     }
 }
Exemplo n.º 4
0
        public static async Task CleanupOldStatusesAsync(int threshold, Action <Tuple <int, int> > progressNotifier = null)
        {
            var n = progressNotifier ?? (_ => { });

            n(Tuple.Create(1, 5));
            await StatusCrud.DeleteOldStatusAsync(threshold);

            n(Tuple.Create(2, 5));
            await StatusCrud.DeleteOrphanedRetweetAsync();

            n(Tuple.Create(3, 5));
            await StatusEntityCrud.DeleteNotExistsAsync(StatusCrud.TableName);

            n(Tuple.Create(4, 5));
            await FavoritesCrud.DeleteNotExistsAsync(StatusCrud.TableName);

            n(Tuple.Create(5, 5));
            await RetweetsCrud.DeleteNotExistsAsync(StatusCrud.TableName);
        }