Skip to content

Commit 4c85bde

Browse files
committed
Migrate TaxRuleSyncAdapter
1 parent 1180997 commit 4c85bde

File tree

4 files changed

+110
-64
lines changed

4 files changed

+110
-64
lines changed

libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/SyncManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ protected void downloadData(ProgressFeedback feedback, Boolean skip_orders, Stri
426426
download(new QuestionSyncAdapter(dataStore, fileStorage, eventSlug, api, configStore.getSyncCycleId(), feedback));
427427
if (profile == Profile.PRETIXPOS) {
428428
download(new QuotaSyncAdapter(dataStore, fileStorage, eventSlug, api, configStore.getSyncCycleId(), feedback, subEvent));
429-
download(new TaxRuleSyncAdapter(dataStore, fileStorage, eventSlug, api, configStore.getSyncCycleId(), feedback));
429+
download(new TaxRuleSyncAdapter(db, fileStorage, eventSlug, api, configStore.getSyncCycleId(), feedback));
430430
download(new TicketLayoutSyncAdapter(dataStore, fileStorage, eventSlug, api, configStore.getSyncCycleId(), feedback));
431431
}
432432
download(new BadgeLayoutSyncAdapter(dataStore, fileStorage, eventSlug, api, configStore.getSyncCycleId(), feedback));

libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/TaxRuleSyncAdapter.java

Lines changed: 0 additions & 63 deletions
This file was deleted.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package eu.pretix.libpretixsync.sync
2+
3+
import app.cash.sqldelight.TransactionWithoutReturn
4+
import app.cash.sqldelight.db.QueryResult
5+
import eu.pretix.libpretixsync.api.PretixApi
6+
import eu.pretix.libpretixsync.sqldelight.SyncDatabase
7+
import eu.pretix.libpretixsync.sqldelight.TaxRule
8+
import eu.pretix.libpretixsync.sync.SyncManager.ProgressFeedback
9+
import org.json.JSONObject
10+
11+
class TaxRuleSyncAdapter(
12+
db: SyncDatabase,
13+
fileStorage: FileStorage,
14+
eventSlug: String,
15+
api: PretixApi,
16+
syncCycleId: String,
17+
feedback: ProgressFeedback?,
18+
) : SqBaseConditionalSyncAdapter<TaxRule, Long>(
19+
db = db,
20+
fileStorage = fileStorage,
21+
eventSlug = eventSlug,
22+
api = api,
23+
syncCycleId = syncCycleId,
24+
feedback = feedback,
25+
) {
26+
override fun queryKnownIDs(): MutableSet<Long>? {
27+
val res = mutableSetOf<Long>()
28+
db.taxRuleQueries.selectServerIdsByEventSlug(eventSlug).execute { cursor ->
29+
while (cursor.next().value) {
30+
val id = cursor.getLong(0) ?: throw RuntimeException("id column not available")
31+
res.add(id)
32+
}
33+
QueryResult.Unit
34+
}
35+
36+
return res
37+
}
38+
39+
override fun getResourceName(): String = "taxrules"
40+
41+
override fun getId(obj: JSONObject): Long = obj.getLong("id")
42+
43+
override fun runInTransaction(body: TransactionWithoutReturn.() -> Unit) {
44+
db.taxRuleQueries.transaction(false, body)
45+
}
46+
47+
override fun insert(jsonobj: JSONObject) {
48+
db.taxRuleQueries.insert(
49+
event_slug = eventSlug,
50+
json_data = jsonobj.toString(),
51+
server_id = jsonobj.getLong("id"),
52+
)
53+
}
54+
55+
override fun update(obj: TaxRule, jsonobj: JSONObject) {
56+
db.taxRuleQueries.updateFromJson(
57+
event_slug = eventSlug,
58+
json_data = jsonobj.toString(),
59+
id = obj.id,
60+
)
61+
}
62+
63+
override fun runBatch(parameterBatch: List<Long>): List<TaxRule> =
64+
db.taxRuleQueries.selectByServerIdListAndEventSlug(
65+
server_id = parameterBatch,
66+
event_slug = eventSlug,
67+
).executeAsList()
68+
69+
override fun getJSON(obj: TaxRule): JSONObject = JSONObject(obj.json_data!!)
70+
71+
override fun delete(key: Long) {
72+
db.taxRuleQueries.deleteByServerId(key)
73+
}
74+
75+
override fun getId(obj: TaxRule): Long = obj.server_id!!
76+
77+
}

libpretixsync/src/main/sqldelight/common/eu/pretix/libpretixsync/sqldelight/TaxRule.sq

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,35 @@ selectByServerId:
77
SELECT *
88
FROM TaxRule
99
WHERE server_id = ?;
10+
11+
selectByServerIdListAndEventSlug:
12+
SELECT *
13+
FROM TaxRule
14+
WHERE server_id IN ? AND event_slug = ?;
15+
16+
selectServerIdsByEventSlug:
17+
SELECT server_id
18+
FROM TaxRule
19+
WHERE event_slug = ?;
20+
21+
deleteByServerId:
22+
DELETE FROM TaxRule
23+
WHERE server_id = ?;
24+
25+
insert:
26+
INSERT INTO TaxRule(
27+
event_slug,
28+
json_data,
29+
server_id
30+
) VALUES (
31+
?,
32+
?,
33+
?
34+
);
35+
36+
updateFromJson:
37+
UPDATE TaxRule
38+
SET
39+
event_slug = ?,
40+
json_data = ?
41+
WHERE id = ?;

0 commit comments

Comments
 (0)