Example #1
0
 public static void CreateTable <T>(bool recreateTable = false)
     where T : class
 {
     using (var provider = new SqliteDataProvider(StorePath))
     {
         using (var context = new Vx.Context(provider))
         {
             context.CreateTable <T>(recreateTable: recreateTable);
         }
     }
 }
Example #2
0
 internal static async Task <long> GetCountAsync <T>(Expression <Func <T, bool> > predicate)
     where T : class
 {
     return(await Task.Run <long>(() =>
     {
         using (var provider = new SqliteDataProvider(StorePath))
         {
             using (var context = new Vx.Context(provider))
             {
                 return context.DataSet <T>().Where(predicate).Count();
             }
         }
     }).ConfigureAwait(false));
 }
Example #3
0
 private static async Task <List <T> > SearchAsync <T>(Expression <Func <T, bool> > searchCriteria, int take, int skip)
     where T : class
 {
     return(await Task.Run <List <T> >(() =>
     {
         using (var provider = new SqliteDataProvider(StorePath))
         {
             using (var context = new Vx.Context(provider))
             {
                 return context.DataSet <T>().Take(take).Skip(skip).ToList();
             }
         }
     }).ConfigureAwait(false));
 }
Example #4
0
 private static async Task <List <T> > ReadBatchAsync <T>(int count, params Expression <Func <T, object> >[] relationsToLoad)
     where T : class
 {
     return(await Task.Run <List <T> >(() =>
     {
         using (var provider = new SqliteDataProvider(StorePath))
         {
             using (var context = new Vx.Context(provider))
             {
                 return context.DataSet <T>().WithRelations(relationsToLoad).Take(count).ToList();
             }
         }
     }).ConfigureAwait(false));
 }
Example #5
0
 private static async Task <T> FirstOrDefaultAsync <T>(Expression <Func <T, bool> > predicate
                                                       , bool recursive = false)
     where T : class
 {
     return(await Task.Run <T>(() =>
     {
         using (var provider = new SqliteDataProvider(StorePath))
         {
             using (var context = new Vx.Context(provider))
             {
                 return context.DataSet <T>().FirstOrDefault(predicate);
             }
         }
     }).ConfigureAwait(false));
 }
Example #6
0
        internal static async Task <ChatConversation> GetConversationFromThreadingInfoAsync(ChatConversationThreadingInfo threadingInfo)
        {
            return(await Task.Run <ChatConversation>(() =>
            {
                using (var provider = new SqliteDataProvider(StorePath))
                {
                    using (var context = new Vx.Context(provider))
                    {
                        var q = from conversation in context.DataSet <ChatConversation>()
                                where conversation.Id == threadingInfo.Id
                                select conversation;

                        return q.FirstOrDefault();
                    }
                }
            }).ConfigureAwait(false));
        }
Example #7
0
        private static async Task UpdateAsync <T>(T item)
            where T : class
        {
            await Semaphore.WaitAsync();

            await Task.Run(() =>
            {
                using (var provider = new SqliteDataProvider(StorePath))
                {
                    using (var context = new Vx.Context(provider))
                    {
                        context.Update <T>(item, true);
                    }
                }
            }).ConfigureAwait(false);

            Semaphore.Release();
        }
Example #8
0
        private static async Task <bool> DeleteAsync <T>(T item)
            where T : class
        {
            await Semaphore.WaitAsync();

            bool deleted = await Task.Run <bool>(() =>
            {
                using (var provider = new SqliteDataProvider(StorePath))
                {
                    using (var context = new Vx.Context(provider))
                    {
                        return(context.Delete <T>(item));
                    }
                }
            }).ConfigureAwait(false);

            Semaphore.Release();

            return(deleted);
        }
Example #9
0
        internal static async Task MarkMessagesAsSeenAsync()
        {
            await Task.Run(() =>
            {
                using (var provider = new SqliteDataProvider(StorePath))
                {
                    using (var context = new Vx.Context(provider))
                    {
                        var q = from message in context.DataSet <ChatMessage>()
                                where !message.IsSeen
                                select message;

                        foreach (var message in q)
                        {
                            message.IsSeen = true;
                            context.Update(message);
                        }
                    }
                }
            }).ConfigureAwait(false);
        }
Example #10
0
 private LambdaRelationFinder(Vx.Context context)
 {
     _context = context;
 }