Yep, it's possible, you could do something like this
library(shiny)
library(dplyr)
library(dbplyr)
library(DBI)
library(rlang)
mydb <- dbConnect(RSQLite::SQLite(), "my-db.sqlite")
if (!db_has_table(mydb, "info")) {
dbCreateTable(mydb, "info", data.frame(user = character(0), info = character(0)))
}
ui <- fluidPage(
dataTableOutput("table"),
textInput("user_input", "Input info here"),
actionButton("submit", "Submit info")
)
server <- function(input, output, session) {
output$table <- renderDataTable({mtcars})
observeEvent(input$submit, {
d <- data.frame(
user = session$user %||% "anonymous",
info = input$user_input
)
db_insert_into(mydb, "info", d)
})
}
shinyApp(ui, server)