# needed R packages for DB connection. Use comma separation for multiple dependencies like [package1, package2]
r_packages: [sparklyr]

connect_every_request: false # optional. Default to false = connect one time per session. True = connect/disconnect each request

# if wanted / needed, create first a shema. CREATE SCHEMA IF NOT EXISTS shinymanager

# connection using DBI Interface
# Possible to use !expr Sys.getenv("NAME_ENV_VAR")
connect:
  fun: "spark_connect"
  method : "databricks"

disconnect:
  fun: "spark_disconnect"
  
tables:
  credentials:
    tablename: shinymanager.credentials                    # if you want to change tablename
    # user, password, start, expire, admin = mandatory with this name
    # after you can add optionnal custom columns next, getting back in server.R and admin interface
    init: CREATE TABLE {tablename} (
            user  varchar(100), 
            password  varchar(256),         
            start  date,                   
            expire date,                   
            admin boolean                  
          )
    # Keep same {glue_name*}, update request only if needed.   
    select: SELECT * FROM {tablename} WHERE user IN ({user*})
    update: UPDATE {tablename} SET {`name`} = {value} WHERE user IN ({udpate_users*})
    delete: DELETE FROM {tablename} WHERE user IN ({del_users*})
  pwd_mngt:
    tablename: shinymanager.pwd_mngt                       # if you want to change tablename
    # user, must_change, have_changed, date_change, n_wrong_pwd = mandatory with this name
    #  No additionnal columns here
    init: CREATE TABLE {tablename} (
            user  varchar(100) , 
            must_change  boolean,           
            have_changed  boolean,        
            date_change date, 
            n_wrong_pwd smallint
          )
    # Keep same {glue_name*}, update request only if needed.  
    select: SELECT * FROM {tablename} WHERE user IN ({user*})
    update: UPDATE {tablename} SET {`name`} = {value} WHERE user IN ({udpate_users*})
    delete: DELETE FROM {tablename} WHERE user IN ({del_users*})
  logs:
    tablename: shinymanager.logs                           # if you want to change tablename
    #  all = mandatory with this name
    #  No additionnal columns here
    init: CREATE TABLE {tablename} (
            user  varchar(100),           
            server_connected timestamp, 
            token  varchar(100),          
            logout timestamp,          
            status  varchar(100),          
            app varchar(100)               
          )
    # Keep same {glue_name*}, update request only if needed. 
    check_token : SELECT * FROM {tablename} WHERE token IN ({token*})
    select: SELECT * FROM {tablename} WHERE user IN ({user*}) AND server_connected >= {`date_h_begin`}  AND server_connected <= {`date_h_end`}
    update: UPDATE {tablename} SET {`name`} = {value} WHERE token IN ({token*})
