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

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

# connection usong DBI Interface
# Possible to use !expr Sys.getenv("NAME_ENV_VAR")
# all args to be passed to DBI::dbConnect by default
# use fun: "connect_function_name" to use other connected functino
connect:
  drv: !expr RPostgres::Postgres()
  host: "your-hostname.com"
  dbname: "dbname"
  port: 5432
  user: "username"
  password: "*********"

# optional / Default
# disconnect:
#   fun: "dbDisconnect"

tables:
  credentials:
    tablename: 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) PRIMARY KEY, 
            "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: 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) PRIMARY KEY, 
            "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: logs                           # if you want to change tablename
    #  all = mandatory with this name
    #  No additionnal columns here
    init: CREATE TABLE {`tablename`} (
            "id" SERIAL PRIMARY KEY,
            "user"  varchar(100),             
            "server_connected" timestamp with time zone, 
            "token"  varchar(100),          
            "logout" timestamp with time zone,          
            "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*})
