Coverage for gws-app/gws/plugin/postgres/finder.py: 0%
31 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 12:46 +0200
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 12:46 +0200
1from typing import Optional, cast
3import gws
4import gws.base.database
5import gws.base.model
6import gws.base.search
7import gws.config.util
9gws.ext.new.finder('postgres')
12class Config(gws.base.search.finder.Config):
13 """Database-based search"""
15 dbUid: Optional[str]
16 """Database provider uid."""
17 tableName: str
18 """Database table name."""
19 sqlFilter: Optional[str]
20 """extra SQL filter"""
23class Object(gws.base.search.finder.Object):
24 db: gws.DatabaseProvider
25 tableName: str
27 def configure(self):
28 self.tableName = self.cfg('tableName') or self.cfg('_defaultTableName')
29 self.configure_provider()
30 self.configure_models()
31 self.configure_templates()
33 # it's difficult to decide if we support keyword/geometry search,
34 # because different models can have different rules
36 self.supportsKeywordSearch = True
37 self.supportsGeometrySearch = True
38 self.supportsFilterSearch = True
40 def configure_provider(self):
41 return gws.config.util.configure_database_provider_for(self)
43 def configure_models(self):
44 return gws.config.util.configure_models_for(self, with_default=True)
46 def create_model(self, cfg):
47 return self.create_child(
48 gws.ext.object.model,
49 cfg,
50 type=self.extType,
51 sqlFilter=self.cfg('sqlFilter'),
52 _defaultDb=self.db,
53 _defaultTableName=self.tableName
54 )