-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb_operations.R
101 lines (92 loc) · 2.18 KB
/
db_operations.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
box::use(
DBI[
dbBind,
dbFetch,
dbConnect,
dbExecute,
dbSendQuery,
dbDisconnect,
dbWriteTable,
dbClearResult,
],
RSQLite[SQLite],
uuid[UUIDgenerate],
. / basepath[basepath],
)
#' Initialize a temp sqlite db on the root dir of
#' this project when app starts
#'
#' @export
make_conn <- \() {
dbConnect(
SQLite(),
basepath("cache.sqlite")
)
}
#' Delete the db
#'
#' @export
delete_cache_db <- \() {
unlink(x = basepath("cache.sqlite"))
}
#' Create new progress record
#'
#' @param conn The database connection object.
#' @return data.frame with these columns:
#' - progress_id
#' - value
#' @export
create_progress_record <- \(conn) {
progress_id <- UUIDgenerate(n = 1L)
db_record <- data.frame(
progress_id = progress_id,
progress_value = 0
)
dbWriteTable(
conn = conn,
name = "progress",
value = db_record,
overwrite = FALSE,
append = TRUE
)
read_progress_record(conn = conn, progress_id = progress_id)
}
#' Read progress record
#'
#' @param conn The database connection object.
#' @param progress_id String. ID of the progress record.
#' @return data.frame
#' @export
read_progress_record <- \(conn, progress_id) {
query <- "SELECT * FROM progress WHERE progress_id = ?"
params <- list(progress_id)
res <- dbSendQuery(conn = conn, statement = query)
dbBind(res, params = params)
found <- dbFetch(res)
dbClearResult(res)
found
}
#' Update progress value
#'
#' @param conn The db connection object.
#' @param progress_id String. ID of the progress record.
#' @param progress_value Integer. Value of the progress.
#' @export
update_progress_record <- \(conn, progress_id, progress_value) {
query <- "UPDATE progress SET progress_value = ? WHERE progress_id = ?"
params <- list(
progress_value,
progress_id
)
dbExecute(conn = conn, statement = query, params = params)
}
#' Delete record
#'
#' @param conn The db connection object.
#' @param progress_id String. ID of the progress record.
#' @export
delete_progress_record <- \(conn, progress_id) {
query <- "DELETE FROM progress WHERE progress_id = ?"
params <- list(progress_id)
dbExecute(conn = conn, statement = query, params = params)
}