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

1from typing import Optional, cast 

2 

3import gws 

4import gws.base.database 

5import gws.base.model 

6import gws.base.search 

7import gws.config.util 

8 

9gws.ext.new.finder('postgres') 

10 

11 

12class Config(gws.base.search.finder.Config): 

13 """Database-based search""" 

14 

15 dbUid: Optional[str] 

16 """Database provider uid.""" 

17 tableName: str 

18 """Database table name.""" 

19 sqlFilter: Optional[str] 

20 """extra SQL filter""" 

21 

22 

23class Object(gws.base.search.finder.Object): 

24 db: gws.DatabaseProvider 

25 tableName: str 

26 

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() 

32 

33 # it's difficult to decide if we support keyword/geometry search, 

34 # because different models can have different rules 

35 

36 self.supportsKeywordSearch = True 

37 self.supportsGeometrySearch = True 

38 self.supportsFilterSearch = True 

39 

40 def configure_provider(self): 

41 return gws.config.util.configure_database_provider_for(self) 

42 

43 def configure_models(self): 

44 return gws.config.util.configure_models_for(self, with_default=True) 

45 

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 )