Beispiel #1
0
        internal override async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
        {
            await base.InitializeAsync(descriptor).ConfigureAwait(false);

            await CreateIndexAsync("ListUserLID", "ListId", false).ConfigureAwait(false);
            await CreateIndexAsync("ListUserUID", "UserId", false).ConfigureAwait(false);
        }
Beispiel #2
0
        internal override async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
        {
            await base.InitializeAsync(descriptor).ConfigureAwait(false);

            await CreateIndexAsync(_tableName + "_SID", "StatusId", false).ConfigureAwait(false);
            await CreateIndexAsync(_tableName + "_UID", "UserId", false).ConfigureAwait(false);
        }
Beispiel #3
0
 internal static Task <int> ExecuteAsync(this IDatabaseConnectionDescriptor descriptor,
                                         string query, object param)
 {
     return(descriptor
            .GetTaskFactory(true)
            .StartNew(() =>
     {
         using (descriptor.AcquireWriteLock())
         {
             try
             {
                 // System.Diagnostics.Debug.WriteLine("EXECUTE: " + query);
                 using (var con = descriptor.GetConnection())
                     using (var tr = con.BeginTransaction(DefaultIsolationLevel))
                     {
                         var result = con.Execute(query, param, tr);
                         tr.Commit();
                         return result;
                     }
             }
             catch (Exception ex)
             {
                 throw WrapException(ex, "ExecuteAsyncWithParam", query);
             }
         }
     }));
 }
Beispiel #4
0
        internal static Task ExecuteAllAsync(this IDatabaseConnectionDescriptor descriptor,
                                             IEnumerable <Tuple <string, object> > queryAndParams)
        {
            var qnp = queryAndParams.Memoize();

            return(descriptor
                   .GetTaskFactory(true)
                   .StartNew(() =>
            {
                using (descriptor.AcquireWriteLock())
                {
                    try
                    {
                        using (var con = descriptor.GetConnection())
                            using (var tr = con.BeginTransaction(DefaultIsolationLevel))
                            {
                                foreach (var tuple in qnp)
                                {
                                    // tuple := (query, param)
                                    // System.Diagnostics.Debug.WriteLine("EXECUTE: " + qap.Item1);
                                    con.Execute(tuple.Item1, tuple.Item2, tr);
                                }
                                tr.Commit();
                            }
                    }
                    catch (Exception ex)
                    {
                        throw WrapException(ex, "ExecuteAllAsync",
                                            qnp.Select(q => q.Item1).JoinString(Environment.NewLine));
                    }
                }
            }));
        }
Beispiel #5
0
 internal static Task <int> ExecuteAsync(this IDatabaseConnectionDescriptor descriptor,
                                         string query)
 {
     return(descriptor
            .GetTaskFactory(true)
            .StartNew(() =>
     {
         using (descriptor.AcquireWriteLock())
         {
             try
             {
                 using (var con = descriptor.GetConnection())
                     using (var tr = con.BeginTransaction(DefaultIsolationLevel))
                     {
                         var result = con.Execute(query, transaction: tr);
                         tr.Commit();
                         return result;
                     }
             }
             catch (Exception ex)
             {
                 throw WrapException(ex, "ExecuteAsync", query);
             }
         }
     }));
 }
Beispiel #6
0
        internal override async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
        {
            await base.InitializeAsync(descriptor).ConfigureAwait(false);

            await CreateIndexAsync("ST_UID", "UserId", false).ConfigureAwait(false);
            await CreateIndexAsync("ST_ROID", "RetweetOriginalId", false).ConfigureAwait(false);
            await CreateIndexAsync("ST_IRSID", "InReplyToStatusId", false).ConfigureAwait(false);
        }
 public Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
 {
     return(Task.WhenAll(
                _followings.InitializeAsync(descriptor),
                _followers.InitializeAsync(descriptor),
                _blockings.InitializeAsync(descriptor),
                _noRetweets.InitializeAsync(descriptor),
                _mutes.InitializeAsync(descriptor)));
 }
Beispiel #8
0
 public async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
 {
     await Task.WhenAll(
         this._followings.InitializeAsync(descriptor),
         this._followers.InitializeAsync(descriptor),
         this._blockings.InitializeAsync(descriptor),
         this._noRetweets.InitializeAsync(descriptor),
         this._mutes.InitializeAsync(descriptor));
 }
Beispiel #9
0
        internal override async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
        {
            await base.InitializeAsync(descriptor);

            await this.CreateIndexAsync("ListFName", "FullName", false);

            await this.CreateIndexAsync("ListUID", "UserId", false);

            await this.CreateIndexAsync("ListSlug", "Slug", false);
        }
Beispiel #10
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);
        }
Beispiel #11
0
 internal static Task <IEnumerable <T> > QueryAsync <T>(this IDatabaseConnectionDescriptor descriptor,
                                                        string query, object param)
 {
     // System.Diagnostics.Debug.WriteLine("QUERY: " + query);
     return(descriptor
            .GetTaskFactory(false)
            .StartNew(() =>
     {
         using (descriptor.AcquireReadLock())
         {
             try
             {
                 using (var con = descriptor.GetConnection())
                 {
                     return con.Query <T>(query, param);
                 }
             }
             catch (Exception ex)
             {
                 throw WrapException(ex, "QueryAsync", query);
             }
         }
     }));
 }
Beispiel #12
0
        internal override async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
        {
            await base.InitializeAsync(descriptor);

            await this.CreateIndexAsync("UT_SN", "ScreenName", true);
        }
Beispiel #13
0
 internal virtual Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
 {
     // initialize descriptor
     _descriptor = descriptor;
     return(Descriptor.ExecuteAsync(TableCreator));
 }
Beispiel #14
0
        internal override async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
        {
            await base.InitializeAsync(descriptor);

            await CreateIndexAsync(TableName + "_IDX_UID", "UserId", false);
        }
Beispiel #15
0
        internal override async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
        {
            await base.InitializeAsync(descriptor);

            await this.CreateIndexAsync(IndexPrefix + "_PID", "ParentId", false);
        }
Beispiel #16
0
 internal virtual async Task InitializeAsync(IDatabaseConnectionDescriptor descriptor)
 {
     // initialize descriptor
     _descriptor = descriptor;
     await Descriptor.ExecuteAsync(TableCreator);
 }