Coverage for gws-app/gws/base/database/manager.py: 0%
33 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1"""Core database utilities."""
3from typing import cast
5import gws
6import gws.gis.crs
9class Config(gws.Config):
10 """Database configuration"""
12 providers: list[gws.ext.config.databaseProvider]
13 """database providers"""
16class Object(gws.DatabaseManager):
17 def configure(self):
18 self.providers = []
20 for cfg in self.cfg('providers', default=[]):
21 self.create_provider(cfg)
23 self.register_middleware('db')
25 ##
27 def enter_middleware(self, req: gws.WebRequester):
28 pass
30 def exit_middleware(self, req: gws.WebRequester, res: gws.WebResponder):
31 # @TODO deinit providers
32 pass
34 ##
36 def create_provider(self, cfg, **kwargs):
37 prov = self.root.create_shared(gws.ext.object.databaseProvider, cfg, **kwargs)
39 # replace a provider with the same uid
40 m = {p.uid: p for p in self.providers}
41 m[prov.uid] = prov
42 self.providers = list(m.values())
44 return prov
46 def find_provider(self, uid=None, ext_type=None):
47 if uid:
48 for p in self.providers:
49 if p.uid == uid and (not ext_type or p.extType == ext_type):
50 return p
52 elif ext_type:
53 for p in self.providers:
54 if p.extType == ext_type:
55 return p
57 elif self.providers:
58 return self.providers[0]