public override bool Open(Area owner) { Owner = owner; if (!DataFolder.Exists) { DataFolder.Create(); } ObjectDatabase = new SQLite.SQLiteConnection(DataFile.FullName, SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.FullMutex | SQLite.SQLiteOpenFlags.ReadWrite); BlobDatabase = new SQLite.SQLiteConnection(BlobFile.FullName, SQLite.SQLiteOpenFlags.FullMutex | SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.ReadWrite); InitializeDBTypes(); var version = ObjectDatabase.Table<StandardObjectStoreMetadata>().FirstOrDefault(); if (version == null) { ObjectDatabase.BeginExclusive(); Printer.PrintMessage("Upgrading object store database..."); var records = owner.GetAllRecords(); foreach (var x in records) { ImportRecordFromFlatStore(x); } var meta = new StandardObjectStoreMetadata(); meta.Version = 2; ObjectDatabase.InsertSafe(meta); ObjectDatabase.Commit(); } else if (version.Version < 3) { Printer.PrintMessage("Upgrading object store database..."); foreach (var x in BlobDatabase.Table<Blobject>()) { Blobsize bs = new Blobsize() { BlobID = x.Id, Length = x.Data.Length }; BlobDatabase.Insert(bs); } ObjectDatabase.BeginExclusive(); ObjectDatabase.DropTable<StandardObjectStoreMetadata>(); ObjectDatabase.CreateTable<StandardObjectStoreMetadata>(); var meta = new StandardObjectStoreMetadata(); meta.Version = 3; ObjectDatabase.InsertSafe(meta); ObjectDatabase.Commit(); } return true; }
public override void Create(Area owner) { Owner = owner; DataFolder.Create(); ObjectDatabase = new SQLite.SQLiteConnection(DataFile.FullName, SQLite.SQLiteOpenFlags.FullMutex | SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.ReadWrite); BlobDatabase = new SQLite.SQLiteConnection(BlobFile.FullName, SQLite.SQLiteOpenFlags.FullMutex | SQLite.SQLiteOpenFlags.Create | SQLite.SQLiteOpenFlags.ReadWrite); InitializeDBTypes(); var meta = new StandardObjectStoreMetadata(); meta.Version = 3; ObjectDatabase.InsertSafe(meta); }