mirror of
https://github.com/ckaczor/FeedCenter.git
synced 2026-02-16 10:58:31 -05:00
Start adding server support
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using FeedCenter.Data;
|
||||
using FeedCenter.Data;
|
||||
using FeedCenter.Options;
|
||||
using Realms;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace FeedCenter;
|
||||
|
||||
@@ -12,16 +12,52 @@ public class FeedCenterEntities
|
||||
{
|
||||
var realmConfiguration = new RealmConfiguration($"{Database.DatabaseFile}")
|
||||
{
|
||||
SchemaVersion = 1,
|
||||
SchemaVersion = 2,
|
||||
MigrationCallback = (migration, oldSchemaVersion) =>
|
||||
{
|
||||
if (oldSchemaVersion == 1)
|
||||
migration.NewRealm.Add(Account.CreateDefault());
|
||||
|
||||
var localAccount = migration.NewRealm.All<Account>().First(a => a.Type == AccountType.Local);
|
||||
|
||||
var newVersionCategories = migration.NewRealm.All<Category>();
|
||||
|
||||
foreach (var newVersionCategory in newVersionCategories)
|
||||
{
|
||||
switch (oldSchemaVersion)
|
||||
{
|
||||
case 1:
|
||||
newVersionCategory.Account = localAccount;
|
||||
newVersionCategory.RemoteId = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var newVersionFeeds = migration.NewRealm.All<Feed>();
|
||||
|
||||
foreach (var newVersionFeed in newVersionFeeds)
|
||||
{
|
||||
if (oldSchemaVersion == 0)
|
||||
switch (oldSchemaVersion)
|
||||
{
|
||||
newVersionFeed.UserAgent = null;
|
||||
case 0:
|
||||
newVersionFeed.UserAgent = null;
|
||||
break;
|
||||
case 1:
|
||||
newVersionFeed.Account = localAccount;
|
||||
newVersionFeed.RemoteId = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var newVersionFeedItems = migration.NewRealm.All<FeedItem>();
|
||||
|
||||
foreach (var newVersionFeedItem in newVersionFeedItems)
|
||||
{
|
||||
switch (oldSchemaVersion)
|
||||
{
|
||||
case 1:
|
||||
newVersionFeedItem.RemoteId = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,13 +65,20 @@ public class FeedCenterEntities
|
||||
|
||||
RealmInstance = Realm.GetInstance(realmConfiguration);
|
||||
|
||||
Accounts = new RealmObservableCollection<Account>(RealmInstance);
|
||||
Settings = new RealmObservableCollection<Setting>(RealmInstance);
|
||||
Feeds = new RealmObservableCollection<Feed>(RealmInstance);
|
||||
Categories = new RealmObservableCollection<Category>(RealmInstance);
|
||||
|
||||
if (!Accounts.Any())
|
||||
{
|
||||
RealmInstance.Write(() => Accounts.Add(Account.CreateDefault()));
|
||||
}
|
||||
|
||||
if (!Categories.Any())
|
||||
{
|
||||
RealmInstance.Write(() => Categories.Add(Category.CreateDefault()));
|
||||
var localAccount = Accounts.First(a => a.Type == AccountType.Local);
|
||||
RealmInstance.Write(() => Categories.Add(Category.CreateDefault(localAccount)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,15 +89,16 @@ public class FeedCenterEntities
|
||||
get { return Categories.First(c => c.IsDefault); }
|
||||
}
|
||||
|
||||
public RealmObservableCollection<Feed> Feeds { get; private set; }
|
||||
private Realm RealmInstance { get; }
|
||||
public RealmObservableCollection<Setting> Settings { get; private set; }
|
||||
|
||||
public void Refresh()
|
||||
public Account LocalAccount
|
||||
{
|
||||
RealmInstance.Refresh();
|
||||
get { return Accounts.First(a => a.Type == AccountType.Local); }
|
||||
}
|
||||
|
||||
public RealmObservableCollection<Feed> Feeds { get; }
|
||||
public RealmObservableCollection<Account> Accounts { get; }
|
||||
private Realm RealmInstance { get; }
|
||||
public RealmObservableCollection<Setting> Settings { get; }
|
||||
|
||||
public void SaveChanges(Action action)
|
||||
{
|
||||
RealmInstance.Write(action);
|
||||
|
||||
Reference in New Issue
Block a user