2026-04-28 21:04:52 +02:00
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
import streamlit as st
|
2026-05-01 17:41:42 +02:00
|
|
|
from pandas import DataFrame
|
2026-04-28 21:04:52 +02:00
|
|
|
from sqlalchemy.sql import text
|
|
|
|
|
from streamlit.user_info import UserInfoProxy
|
|
|
|
|
|
|
|
|
|
from queries.connection import connection
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
def find_user_by_oidc_id(oidc_user_id):
|
|
|
|
|
return connection().query('SELECT * FROM users WHERE oidc_user_id = :id', params={'id': oidc_user_id})
|
|
|
|
|
|
|
|
|
|
def find_user_by_email(email):
|
|
|
|
|
return connection().query('SELECT * FROM users WHERE email = :email', params={'email': email})
|
|
|
|
|
|
|
|
|
|
def find_default_user():
|
|
|
|
|
return find_user_by_email('default')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def update_default_user(email, name, oidc_user_id):
|
|
|
|
|
with connection().session as session:
|
|
|
|
|
try:
|
|
|
|
|
query = text("UPDATE users SET email = :email, name = :name, oidc_user_id = :user_id WHERE email = 'default'")
|
|
|
|
|
session.execute(query, {'email': email, 'name': name, 'user_id': oidc_user_id})
|
|
|
|
|
except Exception as e:
|
|
|
|
|
session.rollback()
|
|
|
|
|
raise e
|
|
|
|
|
|
|
|
|
|
|
2026-05-01 17:41:42 +02:00
|
|
|
def create_user(email, name, oidc_user_id) -> DataFrame:
|
2026-04-28 21:04:52 +02:00
|
|
|
with connection().session as session:
|
|
|
|
|
try:
|
|
|
|
|
logger.info("Creating new user %s", email)
|
2026-05-01 17:41:42 +02:00
|
|
|
query = text('INSERT INTO users (email, name, oidc_user_id) VALUES (:email, :name, :user_id) RETURNING *')
|
|
|
|
|
return DataFrame(session.execute(query, {'email': email, 'name': name, 'user_id': oidc_user_id}))
|
2026-04-28 21:04:52 +02:00
|
|
|
except Exception as e:
|
|
|
|
|
session.rollback()
|
|
|
|
|
raise e
|