11package conf
22
3- import android.content.ContentValues
4- import android.database.Cursor
3+ import androidx.sqlite.execSQL
54import db.Conf
65import db.Db
76import kotlinx.coroutines.Dispatchers
@@ -19,7 +18,7 @@ class ConfRepo(
1918 private val db : Db ,
2019) {
2120
22- private val database = db.getDatabase ()
21+ private val conn = db.getConnection ()
2322
2423 private val _conf : MutableStateFlow <Conf > = MutableStateFlow (
2524 runBlocking { select() ? : DEFAULT_CONF })
@@ -42,98 +41,103 @@ class ConfRepo(
4241 }
4342
4443 fun insert (conf : Conf ) {
45- val values = ContentValues ().apply {
46- put(" backend" , conf.backend)
47- put(" miniflux_server_url" , conf.minifluxServerUrl)
48- put(" miniflux_server_trust_self_signed_certs" , conf.minifluxServerTrustSelfSignedCerts)
49- put(" miniflux_server_username" , conf.minifluxServerUsername)
50- put(" miniflux_server_password" , conf.minifluxServerPassword)
51- put(" nextcloud_server_url" , conf.nextcloudServerUrl)
52- put(
53- " nextcloud_server_trust_self_signed_certs" , conf.nextcloudServerTrustSelfSignedCerts
54- )
55- put(" nextcloud_server_username" , conf.nextcloudServerUsername)
56- put(" nextcloud_server_password" , conf.nextcloudServerPassword)
57- put(" initial_sync_completed" , conf.initialSyncCompleted)
58- put(" last_entries_sync_datetime" , conf.lastEntriesSyncDatetime)
59- put(" show_read_entries" , conf.showReadEntries)
60- put(" sort_order" , conf.sortOrder)
61- put(" show_preview_images" , conf.showPreviewImages)
62- put(" crop_preview_images" , conf.cropPreviewImages)
63- put(" mark_scrolled_entries_as_read" , conf.markScrolledEntriesAsRead)
64- put(" sync_on_startup" , conf.syncOnStartup)
65- put(" sync_in_background" , conf.syncInBackground)
66- put(" background_sync_interval_millis" , conf.backgroundSyncIntervalMillis)
67- put(" use_built_in_browser" , conf.useBuiltInBrowser)
68- put(" show_preview_text" , conf.showPreviewText)
69- put(" synced_on_startup" , conf.syncedOnStartup)
70- }
71- database.insert(" conf" , null , values)
44+ val stmt = conn.prepare("""
45+ INSERT OR REPLACE INTO conf (
46+ backend, miniflux_server_url, miniflux_server_trust_self_signed_certs,
47+ miniflux_server_username, miniflux_server_password, nextcloud_server_url,
48+ nextcloud_server_trust_self_signed_certs, nextcloud_server_username,
49+ nextcloud_server_password, initial_sync_completed, last_entries_sync_datetime,
50+ show_read_entries, sort_order, show_preview_images, crop_preview_images,
51+ mark_scrolled_entries_as_read, sync_on_startup, sync_in_background,
52+ background_sync_interval_millis, use_built_in_browser, show_preview_text,
53+ synced_on_startup
54+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
55+ """ )
56+ stmt.bindText(1 , conf.backend)
57+ stmt.bindText(2 , conf.minifluxServerUrl)
58+ stmt.bindInt(3 , if (conf.minifluxServerTrustSelfSignedCerts) 1 else 0 )
59+ stmt.bindText(4 , conf.minifluxServerUsername)
60+ stmt.bindText(5 , conf.minifluxServerPassword)
61+ stmt.bindText(6 , conf.nextcloudServerUrl)
62+ stmt.bindInt(7 , if (conf.nextcloudServerTrustSelfSignedCerts) 1 else 0 )
63+ stmt.bindText(8 , conf.nextcloudServerUsername)
64+ stmt.bindText(9 , conf.nextcloudServerPassword)
65+ stmt.bindInt(10 , if (conf.initialSyncCompleted) 1 else 0 )
66+ stmt.bindText(11 , conf.lastEntriesSyncDatetime)
67+ stmt.bindInt(12 , if (conf.showReadEntries) 1 else 0 )
68+ stmt.bindText(13 , conf.sortOrder)
69+ stmt.bindInt(14 , if (conf.showPreviewImages) 1 else 0 )
70+ stmt.bindInt(15 , if (conf.cropPreviewImages) 1 else 0 )
71+ stmt.bindInt(16 , if (conf.markScrolledEntriesAsRead) 1 else 0 )
72+ stmt.bindInt(17 , if (conf.syncOnStartup) 1 else 0 )
73+ stmt.bindInt(18 , if (conf.syncInBackground) 1 else 0 )
74+ stmt.bindLong(19 , conf.backgroundSyncIntervalMillis)
75+ stmt.bindInt(20 , if (conf.useBuiltInBrowser) 1 else 0 )
76+ stmt.bindInt(21 , if (conf.showPreviewText) 1 else 0 )
77+ stmt.bindInt(22 , if (conf.syncedOnStartup) 1 else 0 )
78+ stmt.step()
79+ stmt.close()
7280 }
7381
7482 fun select (): Conf ? {
75- val cursor = database.query(
76- " conf" , arrayOf(
77- " backend" ,
78- " miniflux_server_url" ,
79- " miniflux_server_trust_self_signed_certs" ,
80- " miniflux_server_username" ,
81- " miniflux_server_password" ,
82- " nextcloud_server_url" ,
83- " nextcloud_server_trust_self_signed_certs" ,
84- " nextcloud_server_username" ,
85- " nextcloud_server_password" ,
86- " initial_sync_completed" ,
87- " last_entries_sync_datetime" ,
88- " show_read_entries" ,
89- " sort_order" ,
90- " show_preview_images" ,
91- " crop_preview_images" ,
92- " mark_scrolled_entries_as_read" ,
93- " sync_on_startup" ,
94- " sync_in_background" ,
95- " background_sync_interval_millis" ,
96- " use_built_in_browser" ,
97- " show_preview_text" ,
98- " synced_on_startup" ,
99- ), " " , emptyArray(), " " , " " , " "
100- )
101- if (! cursor.moveToNext()) {
83+ val stmt = conn.prepare("""
84+ SELECT
85+ backend,
86+ miniflux_server_url,
87+ miniflux_server_trust_self_signed_certs,
88+ miniflux_server_username,
89+ miniflux_server_password,
90+ nextcloud_server_url,
91+ nextcloud_server_trust_self_signed_certs,
92+ nextcloud_server_username,
93+ nextcloud_server_password,
94+ initial_sync_completed,
95+ last_entries_sync_datetime,
96+ show_read_entries,
97+ sort_order,
98+ show_preview_images,
99+ crop_preview_images,
100+ mark_scrolled_entries_as_read,
101+ sync_on_startup,
102+ sync_in_background,
103+ background_sync_interval_millis,
104+ use_built_in_browser,
105+ show_preview_text,
106+ synced_on_startup
107+ FROM conf
108+ """ )
109+ if (! stmt.step()) {
110+ stmt.close()
102111 return null
103- } else {
104- return Conf (
105- backend = cursor.getString(0 ),
106- minifluxServerUrl = cursor.getString(1 ),
107- minifluxServerTrustSelfSignedCerts = cursor.getBoolean(2 ),
108- minifluxServerUsername = cursor.getString(3 ),
109- minifluxServerPassword = cursor.getString(4 ),
110- nextcloudServerUrl = cursor.getString(5 ),
111- nextcloudServerTrustSelfSignedCerts = cursor.getBoolean(6 ),
112- nextcloudServerUsername = cursor.getString(7 ),
113- nextcloudServerPassword = cursor.getString(8 ),
114- initialSyncCompleted = cursor.getBoolean(9 ),
115- lastEntriesSyncDatetime = cursor.getString(10 ),
116- showReadEntries = cursor.getBoolean(11 ),
117- sortOrder = cursor.getString(12 ),
118- showPreviewImages = cursor.getBoolean(13 ),
119- cropPreviewImages = cursor.getBoolean(14 ),
120- markScrolledEntriesAsRead = cursor.getBoolean(15 ),
121- syncOnStartup = cursor.getBoolean(16 ),
122- syncInBackground = cursor.getBoolean(17 ),
123- backgroundSyncIntervalMillis = cursor.getLong(18 ),
124- useBuiltInBrowser = cursor.getBoolean(19 ),
125- showPreviewText = cursor.getBoolean(20 ),
126- syncedOnStartup = cursor.getBoolean(21 ),
127- )
128112 }
129- }
130-
131- fun Cursor.getBoolean (columnIndex : Int ): Boolean {
132- return getInt(columnIndex) == 1
113+ return Conf (
114+ backend = stmt.getText(0 ),
115+ minifluxServerUrl = stmt.getText(1 ),
116+ minifluxServerTrustSelfSignedCerts = stmt.getInt(2 ) == 1 ,
117+ minifluxServerUsername = stmt.getText(3 ),
118+ minifluxServerPassword = stmt.getText(4 ),
119+ nextcloudServerUrl = stmt.getText(5 ),
120+ nextcloudServerTrustSelfSignedCerts = stmt.getInt(6 ) == 1 ,
121+ nextcloudServerUsername = stmt.getText(7 ),
122+ nextcloudServerPassword = stmt.getText(8 ),
123+ initialSyncCompleted = stmt.getInt(9 ) == 1 ,
124+ lastEntriesSyncDatetime = stmt.getText(10 ),
125+ showReadEntries = stmt.getInt(11 ) == 1 ,
126+ sortOrder = stmt.getText(12 ),
127+ showPreviewImages = stmt.getInt(13 ) == 1 ,
128+ cropPreviewImages = stmt.getInt(14 ) == 1 ,
129+ markScrolledEntriesAsRead = stmt.getInt(15 ) == 1 ,
130+ syncOnStartup = stmt.getInt(16 ) == 1 ,
131+ syncInBackground = stmt.getInt(17 ) == 1 ,
132+ backgroundSyncIntervalMillis = stmt.getLong(18 ),
133+ useBuiltInBrowser = stmt.getInt(19 ) == 1 ,
134+ showPreviewText = stmt.getInt(20 ) == 1 ,
135+ syncedOnStartup = stmt.getInt(21 ) == 1 ,
136+ )
133137 }
134138
135139 fun delete () {
136- database.delete( " conf " , " " , emptyArray() )
140+ conn.execSQL( " DELETE FROM conf " )
137141 }
138142
139143 companion object {
0 commit comments