Example #1
0
        public void Save(BuddySubscription subscription, List <BuddyItem> items)
        {
            using (ISession session = SessionCreator.OpenSession()) {
                using (ITransaction transaction = session.BeginTransaction()) {
                    foreach (var item in items)
                    {
                        item.BuddyId = subscription.Id;
                        session.Save(item);
                    }


                    // Update / Insert records into lookup table
                    foreach (var item in items)
                    {
                        foreach (var record in new[] { item.BaseRecord, item.PrefixRecord, item.SuffixRecord, item.MateriaRecord })
                        {
                            if (!string.IsNullOrEmpty(record))
                            {
                                session.CreateSQLQuery(
                                    $@"INSERT OR IGNORE INTO {BuddyItemRecordTable.Table} ({BuddyItemRecordTable.Item}, {BuddyItemRecordTable.Record}) 
                                                VALUES (:id, :record)")
                                .SetParameter("id", item.RemoteItemId)
                                .SetParameter("record", record)
                                .ExecuteUpdate();
                            }
                        }
                    }

                    transaction.Commit();
                }

                UpdatePetRecords(session, items);
            }
        }
Example #2
0
 public IList <string> GetOnlineIds(BuddySubscription subscription)
 {
     using (ISession session = SessionCreator.OpenSession()) {
         using (session.BeginTransaction()) {
             return(session.CreateCriteria <BuddyItem>()
                    .Add(Restrictions.Eq(nameof(BuddyItem.BuddyId), subscription.Id))
                    .SetProjection(Projections.Property(nameof(BuddyItem.RemoteItemId)))
                    .List <string>());
         }
     }
 }
Example #3
0
        public void Delete(BuddySubscription subscription, List <DeleteItemDto> items)
        {
            using (ISession session = SessionCreator.OpenSession()) {
                using (ITransaction transaction = session.BeginTransaction()) {
                    foreach (var item in items)
                    {
                        session.CreateSQLQuery($@"DELETE FROM {BuddyItemsTable.Table} 
                                WHERE {BuddyItemsTable.RemoteItemId} = :cloudId
                                AND {BuddyItemsTable.SubscriptionId} = :subscriptionId")
                        .SetParameter("cloudId", item.Id)
                        .SetParameter("subscriptionId", subscription.Id)
                        .ExecuteUpdate();
                    }

                    // Remove record from records table (lookup table)
                    session.CreateSQLQuery($"DELETE FROM {BuddyItemRecordTable.Table} WHERE NOT {BuddyItemRecordTable.Item} IN (SELECT {BuddyItemsTable.RemoteItemId} FROM {BuddyItemsTable.Table})")
                    .ExecuteUpdate();

                    transaction.Commit();
                }
            }
        }