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
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
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
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"
# 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