Files
boc/landvex-admin-backend/app/__pycache__/database.cpython-39.pyc
T

29 lines
4.5 KiB
Plaintext
Raw Normal View History

a
0¦Hj{ã@s>dZddlmZddlmZmZddlmZmZm Z ddl
m Z ddl m
Z
ddlmZeƒZej d¡r~eejejd d
Zneejejejd ejd d Ze eed d d d
Ze ƒZedœddZeeedfdœddƒZGdddƒZeeddœddZeddœddZeddœddZeddœdd „Z ee!dœd!d"„Z"dS)#u‡
Databaskonfiguration och session-hantering för LandveX Admin Backend.
Inkluderar tenant schema-isolering via PostgreSQL search_path.
é)Úasynccontextmanager)ÚAsyncGeneratorÚOptional)Úcreate_async_engineÚ AsyncSessionÚasync_sessionmaker)Údeclarative_base)Útext)Ú get_settingsZsqliteT)ÚechoÚfuture)Z pool_sizeZ max_overflowZ
pool_pre_pingr r F)Úclass_Zexpire_on_commitZ autoflushZ
autocommit)Úreturnc Ctƒ4IdHšv}zNz|V| ¡IdHWn"tyL| ¡IdHYn0W| ¡IdHn| ¡IdH0WdƒIdHqš1IdHs0YdS)u"Dependency för FastAPI-endpoints.N©ÚAsyncSessionLocalÚcommitÚ ExceptionZrollbackÚclose©Úsession©rúE/home/bernt/.openclaw/workspace/landvex-admin-backend/app/database.pyÚget_db,s 
rNc Ctƒ4IdHšv}zNz|V| ¡IdHWn"tyL| ¡IdHYn0W| ¡IdHn| ¡IdH0WdƒIdHqš1IdHs0YdS)u&Context manager för databassessioner.NrrrrrÚget_db_context9s 
rc@s6eZdZdZd
eeedœddZddZdd „Z dS) Ú
TenantContextu©Context manager för tenant schema-isolering.
Använder PostgreSQL search_path och application context
för att säkerställa dataisolering mellan tenants.
rÚ
tenant_schemacCs||_|ptj|_dS)N)rÚsettingsÚDEFAULT_TENANT_SCHEMAr)ÚselfrrrrrÚ__init__NszTenantContext.__init__cÃsB|j td|jdƒ¡IdH|j tdƒd|ji¡IdH|S)u-Sätt tenant context pÃ¥ databasanslutningen.úSET search_path TO "ú ", publicNú6SELECT set_config('app.current_tenant', :tenant, true)Útenant)rÚexecuter r)rrrrÚ
__aenter__Rsÿ
þ
zTenantContext.__aenter__cÃs0|j tdƒ¡IdH|j tdƒ¡IdHdS)uÃ…terställ tenant context.úSET search_path TO publicNú1SELECT set_config('app.current_tenant', '', true)F)rr%r )rÚexc_typeÚexc_valÚexc_tbrrrÚ __aexit__]s
ÿ
zTenantContext.__aexit__)N)
Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrÚstrr r&r,rrrrrGs r)rrrcÃs:| td|dƒ¡IdH| tdƒd|i¡IdHdS)u)Sätt tenant schema för aktuell session.r!r"Nr#r$©r%r rrrrÚset_tenant_schemafsÿ
þr3)rrcÃs,| tdƒ¡IdH| tdƒ¡IdHdS)u Ã…terställ schema till default.r'Nr(r2rrrrÚreset_tenant_schemaqsÿr4)Ú schema_namerc Ãsxt ¡4IdHšN}| td|dƒ¡IdH| td|dƒ¡IdHWdƒIdHqt1IdHsj0YdS)u%Skapa ett nytt schema för en tenant.NzCREATE SCHEMA IF NOT EXISTS "ú"zGRANT USAGE ON SCHEMA "z " TO PUBLIC©ÚengineÚbeginr%r ©r5ÚconnrrrÚcreate_tenant_schemaysr<c Ãs\t ¡4IdHš2}| td|dƒ¡IdHWdƒIdHqX1IdHsN0YdS)zTa bort ett tenant schema.NzDROP SCHEMA IF EXISTS "z " CASCADEr7r:rrrÚdrop_tenant_schema€sr=c Ãsbt ¡4IdHš8}| tdƒd|i¡IdH}| ¡WdƒIdHS1IdHsT0YdS)zKolla om ett schema finns.NzTSELECT EXISTS(SELECT 1 FROM information_schema.schemata WHERE schema_name = :schema)Úschema)r8Úconnectr%r Úscalar)r5r;ÚresultrrrÚ