app: make DataStore a class and refine on each platform
authorAlexis Laferrière <alexis.laf@xymus.net>
Wed, 6 Sep 2017 19:46:22 +0000 (15:46 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Fri, 8 Sep 2017 21:18:55 +0000 (17:18 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/android/data_store.nit
lib/app/data_store.nit
lib/ios/data_store.nit
lib/linux/data_store.nit

index 989b64c..cbef585 100644 (file)
 module data_store
 
 import app::data_store
-private import shared_preferences
+import shared_preferences
 
-redef class App
-       redef var data_store = new SharedPreferenceView
-end
-
-private class SharedPreferenceView
-       super DataStore
+redef class DataStore
 
        # The `SharedPreferences` used to implement the `DataStore`
        var shared_preferences = new SharedPreferences.privately(app, "data_store") is lazy
index ebebe83..9cbe124 100644 (file)
@@ -29,11 +29,11 @@ import ios::data_store is conditional(ios)
 
 redef class App
        # Services to store and load data
-       fun data_store: DataStore is abstract
+       var data_store = new DataStore is lazy
 end
 
 # Simple data storage facility
-interface DataStore
+class DataStore
 
        # Get the object stored at `key`, or null if nothing is available
        fun [](key: String): nullable Object is abstract
index a06586c..c71a16e 100644 (file)
@@ -19,12 +19,7 @@ import app::data_store
 import cocoa::foundation
 private import json
 
-redef class App
-       redef var data_store = new UserDefaultView
-end
-
-private class UserDefaultView
-       super DataStore
+redef class DataStore
 
        # The `NSUserDefaults` used to implement `DataStore`
        var user_defaults = new NSUserDefaults.standard_user_defaults is lazy
index 5924822..6270bd2 100644 (file)
@@ -19,15 +19,10 @@ module data_store
 
 import app::data_store
 private import xdg_basedir
-private import sqlite3
+import sqlite3
 private import json
 
-redef class App
-       redef var data_store = new LinuxStore
-end
-
-private class LinuxStore
-       super DataStore
+redef class DataStore
 
        # File path of the Sqlite3 DB file
        fun db_file: String do return "data_store.db"
@@ -35,7 +30,7 @@ private class LinuxStore
        # Sqlite3 table used
        fun db_table: String do return "data_store"
 
-       var db_cache: nullable Sqlite3DB = null
+       private var db_cache: nullable Sqlite3DB = null
 
        # Database to use to implement the `DataStore`
        fun db: nullable Sqlite3DB