watchmen-collector-kernel 16.5.15__tar.gz → 16.5.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/PKG-INFO +9 -9
  2. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/pyproject.toml +9 -9
  3. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/cache/__init__.py +1 -0
  4. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/cache/collector_cache_manger.py +55 -0
  5. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/cache/collector_cache_service.py +18 -0
  6. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/cache/model_config_cache.py +45 -0
  7. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/cache/table_config_cache.py +89 -0
  8. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/common/__init__.py +3 -1
  9. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/common/exception.py +2 -0
  10. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/common/settings.py +6 -0
  11. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/__init__.py +1 -0
  12. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/data_capture.py +4 -2
  13. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/service/model_config_service.py +35 -0
  14. watchmen_collector_kernel-16.5.17/src/watchmen_collector_kernel/service/table_config_service.py +70 -0
  15. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/LICENSE +0 -0
  16. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/__init__.py +0 -0
  17. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/common/constants.py +0 -0
  18. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/__init__.py +0 -0
  19. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/change_data_json.py +0 -0
  20. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/change_data_json_history.py +0 -0
  21. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/change_data_record.py +0 -0
  22. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/change_data_record_history.py +0 -0
  23. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/collector_model_config.py +0 -0
  24. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/collector_module_config.py +0 -0
  25. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/collector_table_config.py +0 -0
  26. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/competitive_lock.py +0 -0
  27. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/condition.py +0 -0
  28. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/scheduled_task.py +0 -0
  29. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/scheduled_task_history.py +0 -0
  30. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/trigger_event.py +0 -0
  31. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/trigger_model.py +0 -0
  32. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/trigger_module.py +0 -0
  33. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/model/trigger_table.py +0 -0
  34. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/criteria_builder.py +0 -0
  35. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/extract_source.py +0 -0
  36. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/extract_utils.py +0 -0
  37. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/lock_clean.py +0 -0
  38. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/lock_helper.py +0 -0
  39. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/task_housekeeping.py +0 -0
  40. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/task_service.py +0 -0
  41. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/service/trigger_collector.py +0 -0
  42. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/__init__.py +0 -0
  43. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/change_data_json_history_service.py +0 -0
  44. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/change_data_json_service.py +0 -0
  45. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/change_data_record_history_service.py +0 -0
  46. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/change_data_record_service.py +0 -0
  47. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/collector_model_config_service.py +0 -0
  48. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/collector_module_config_service.py +0 -0
  49. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/collector_table_config_service.py +0 -0
  50. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/competitive_lock_service.py +0 -0
  51. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/scheduled_task_history_service.py +0 -0
  52. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/scheduled_task_service.py +0 -0
  53. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/trigger_event_service.py +0 -0
  54. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/trigger_model_service.py +0 -0
  55. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/trigger_module_service.py +0 -0
  56. {watchmen_collector_kernel-16.5.15 → watchmen_collector_kernel-16.5.17}/src/watchmen_collector_kernel/storage/trigger_table_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: watchmen-collector-kernel
3
- Version: 16.5.15
3
+ Version: 16.5.17
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: botlikes
@@ -19,11 +19,11 @@ Provides-Extra: oss
19
19
  Provides-Extra: postgresql
20
20
  Provides-Extra: s3
21
21
  Requires-Dist: numpy (>=1.23.3,<2.0.0)
22
- Requires-Dist: watchmen-data-kernel (==16.5.15)
23
- Requires-Dist: watchmen-storage-mongodb (==16.5.15) ; extra == "mongodb"
24
- Requires-Dist: watchmen-storage-mssql (==16.5.15) ; extra == "mssql"
25
- Requires-Dist: watchmen-storage-mysql (==16.5.15) ; extra == "mysql"
26
- Requires-Dist: watchmen-storage-oracle (==16.5.15) ; extra == "oracle"
27
- Requires-Dist: watchmen-storage-oss (==16.5.15) ; extra == "oss"
28
- Requires-Dist: watchmen-storage-postgresql (==16.5.15) ; extra == "postgresql"
29
- Requires-Dist: watchmen-storage-s3 (==16.5.15) ; extra == "s3"
22
+ Requires-Dist: watchmen-data-kernel (==16.5.17)
23
+ Requires-Dist: watchmen-storage-mongodb (==16.5.17) ; extra == "mongodb"
24
+ Requires-Dist: watchmen-storage-mssql (==16.5.17) ; extra == "mssql"
25
+ Requires-Dist: watchmen-storage-mysql (==16.5.17) ; extra == "mysql"
26
+ Requires-Dist: watchmen-storage-oracle (==16.5.17) ; extra == "oracle"
27
+ Requires-Dist: watchmen-storage-oss (==16.5.17) ; extra == "oss"
28
+ Requires-Dist: watchmen-storage-postgresql (==16.5.17) ; extra == "postgresql"
29
+ Requires-Dist: watchmen-storage-s3 (==16.5.17) ; extra == "s3"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "watchmen-collector-kernel"
3
- version = "16.5.15"
3
+ version = "16.5.17"
4
4
  description = ""
5
5
  authors = ["botlikes <75356972+botlikes456@users.noreply.github.com>"]
6
6
  license = "MIT"
@@ -11,14 +11,14 @@ packages = [
11
11
  [tool.poetry.dependencies]
12
12
  python = "^3.9"
13
13
  numpy = "^1.23.3"
14
- watchmen-data-kernel = "16.5.15"
15
- watchmen-storage-mysql = { version = "16.5.15", optional = true }
16
- watchmen-storage-oracle = { version = "16.5.15", optional = true }
17
- watchmen-storage-mongodb = { version = "16.5.15", optional = true }
18
- watchmen-storage-mssql = { version = "16.5.15", optional = true }
19
- watchmen-storage-postgresql = { version = "16.5.15", optional = true }
20
- watchmen-storage-oss = { version = "16.5.15", optional = true }
21
- watchmen-storage-s3 = { version = "16.5.15", optional = true }
14
+ watchmen-data-kernel = "16.5.17"
15
+ watchmen-storage-mysql = { version = "16.5.17", optional = true }
16
+ watchmen-storage-oracle = { version = "16.5.17", optional = true }
17
+ watchmen-storage-mongodb = { version = "16.5.17", optional = true }
18
+ watchmen-storage-mssql = { version = "16.5.17", optional = true }
19
+ watchmen-storage-postgresql = { version = "16.5.17", optional = true }
20
+ watchmen-storage-oss = { version = "16.5.17", optional = true }
21
+ watchmen-storage-s3 = { version = "16.5.17", optional = true }
22
22
 
23
23
  [tool.poetry.dev-dependencies]
24
24
 
@@ -0,0 +1 @@
1
+ from .collector_cache_service import CollectorCacheService
@@ -0,0 +1,55 @@
1
+ from cacheout import Cache
2
+ from watchmen_data_kernel.cache.cache_manager import cache_set
3
+
4
+ from watchmen_data_kernel.cache import configure_cache
5
+
6
+
7
+ class ModelConfigByNameCache(Cache):
8
+ pass
9
+
10
+
11
+ class TableConfigByNameCache(Cache):
12
+ pass
13
+
14
+
15
+ class TableConfigByTableNameCache(Cache):
16
+ pass
17
+
18
+
19
+ class TableConfigsByParentNameCache(Cache):
20
+ pass
21
+
22
+
23
+ configure_cache('MODEL_CONFIG_BY_NAME',
24
+ {'cache_class': ModelConfigByNameCache, 'maxsize': 512})
25
+
26
+
27
+ configure_cache('TABLE_CONFIG_BY_NAME',
28
+ {'cache_class': TableConfigByNameCache, 'maxsize': 512})
29
+
30
+
31
+ configure_cache('TABLE_CONFIG_BY_TABLE_NAME',
32
+ {'cache_class': TableConfigByTableNameCache, 'maxsize': 512})
33
+
34
+
35
+ configure_cache('TABLE_CONFIGS_BY_PARENT_NAME',
36
+ {'cache_class': TableConfigsByParentNameCache, 'maxsize': 512})
37
+
38
+
39
+ def get_model_config_by_name_cache() -> ModelConfigByNameCache:
40
+ return cache_set['MODEL_CONFIG_BY_NAME']
41
+
42
+
43
+ def get_table_config_by_name_cache() -> TableConfigByNameCache:
44
+ return cache_set['TABLE_CONFIG_BY_NAME']
45
+
46
+
47
+ def get_table_config_by_table_name_cache() -> TableConfigByTableNameCache:
48
+ return cache_set['TABLE_CONFIG_BY_TABLE_NAME']
49
+
50
+
51
+ def get_table_configs_by_parent_name_cache() -> TableConfigsByParentNameCache:
52
+ return cache_set['TABLE_CONFIGS_BY_PARENT_NAME']
53
+
54
+
55
+
@@ -0,0 +1,18 @@
1
+ from .model_config_cache import ModelConfigCache, model_config_cache
2
+ from .table_config_cache import TableConfigCache, table_config_cache
3
+
4
+
5
+ class CollectorCacheService:
6
+
7
+ @staticmethod
8
+ def model_config() -> ModelConfigCache:
9
+ return model_config_cache
10
+
11
+ @staticmethod
12
+ def table_config() -> TableConfigCache:
13
+ return table_config_cache
14
+
15
+ @staticmethod
16
+ def clear_all() -> None:
17
+ CollectorCacheService.model_config().clear()
18
+ CollectorCacheService.table_config().clear()
@@ -0,0 +1,45 @@
1
+ from typing import List, Optional
2
+
3
+ from watchmen_collector_kernel.model import CollectorModelConfig
4
+
5
+ from watchmen_data_kernel.cache import InternalCache
6
+
7
+ from .collector_cache_manger import get_model_config_by_name_cache
8
+ from watchmen_collector_kernel.common import ask_collector_config_cache_enabled
9
+
10
+
11
+ class ModelConfigCache:
12
+
13
+ def __init__(self):
14
+ self.ByNameCache = InternalCache(cache=get_model_config_by_name_cache)
15
+
16
+ def put(self, model_config: CollectorModelConfig) -> Optional[CollectorModelConfig]:
17
+ if ask_collector_config_cache_enabled():
18
+ self.ByNameCache.remove(model_config.modelName)
19
+ # refresh other caches
20
+ existing_config = self.ByNameCache.put(model_config.modelName, model_config)
21
+ return existing_config
22
+ else:
23
+ return None
24
+
25
+ def get(self, model_name: str) -> Optional[CollectorModelConfig]:
26
+ if ask_collector_config_cache_enabled():
27
+ return self.ByNameCache.get(model_name)
28
+ else:
29
+ return None
30
+
31
+ def remove(self, model_name: str) -> Optional[CollectorModelConfig]:
32
+ if ask_collector_config_cache_enabled():
33
+ existing: Optional[CollectorModelConfig] = self.ByNameCache.remove(model_name)
34
+ return existing
35
+ else:
36
+ return None
37
+
38
+ def all(self) -> List[CollectorModelConfig]:
39
+ return list(self.ByNameCache.values())
40
+
41
+ def clear(self) -> None:
42
+ self.ByNameCache.clear()
43
+
44
+
45
+ model_config_cache = ModelConfigCache()
@@ -0,0 +1,89 @@
1
+ from typing import List, Optional, Dict
2
+
3
+ from watchmen_collector_kernel.model import CollectorTableConfig
4
+
5
+ from watchmen_data_kernel.cache import InternalCache
6
+
7
+ from .collector_cache_manger import get_table_config_by_name_cache, \
8
+ get_table_config_by_table_name_cache, get_table_configs_by_parent_name_cache
9
+ from watchmen_collector_kernel.common import ask_collector_config_cache_enabled
10
+
11
+
12
+ class TableConfigCache:
13
+
14
+ def __init__(self):
15
+ self.ByNameCache = InternalCache(cache=get_table_config_by_name_cache)
16
+ self.ByTableNameCache = InternalCache(cache=get_table_config_by_table_name_cache)
17
+ self.ByParentNameCache = InternalCache(cache=get_table_configs_by_parent_name_cache)
18
+
19
+ def put_config_by_name(self, table_config: CollectorTableConfig) -> Optional[CollectorTableConfig]:
20
+ if ask_collector_config_cache_enabled():
21
+ self.ByNameCache.remove(table_config.name)
22
+ existing_config = self.ByTableNameCache.put(table_config.name, table_config)
23
+ return existing_config
24
+ else:
25
+ return None
26
+
27
+ def get_config_by_name(self, name: str) -> Optional[CollectorTableConfig]:
28
+ if ask_collector_config_cache_enabled():
29
+ return self.ByNameCache.get(name)
30
+ else:
31
+ return None
32
+
33
+ def remove_config_by_name(self, name: str) -> Optional[CollectorTableConfig]:
34
+ if ask_collector_config_cache_enabled():
35
+ existing: Optional[CollectorTableConfig] = self.ByNameCache.remove(name)
36
+ return existing
37
+ else:
38
+ return None
39
+
40
+ def put_config_by_table_name(self, table_config: CollectorTableConfig) -> Optional[CollectorTableConfig]:
41
+ if ask_collector_config_cache_enabled():
42
+ self.ByTableNameCache.remove(table_config.tableName)
43
+ existing_config = self.ByTableNameCache.put(table_config.tableName, table_config)
44
+ return existing_config
45
+ else:
46
+ return None
47
+
48
+ def get_config_by_table_name(self, table_name: str) -> Optional[CollectorTableConfig]:
49
+ if ask_collector_config_cache_enabled():
50
+ return self.ByTableNameCache.get(table_name)
51
+ else:
52
+ return None
53
+
54
+ def remove_config_by_table_name(self, table_name: str) -> Optional[CollectorTableConfig]:
55
+ if ask_collector_config_cache_enabled():
56
+ existing: Optional[CollectorTableConfig] = self.ByTableNameCache.remove(table_name)
57
+ return existing
58
+ else:
59
+ return None
60
+
61
+ def put_configs_by_parent_name(self, parent_name: str,
62
+ configs: List[CollectorTableConfig]) -> Optional[List[CollectorTableConfig]]:
63
+ if ask_collector_config_cache_enabled():
64
+ self.ByParentNameCache.remove(parent_name)
65
+ existing_configs = self.ByParentNameCache.put(parent_name, configs)
66
+ return existing_configs
67
+ else:
68
+ return None
69
+
70
+ def get_configs_by_parent_name(self, parent_name: str) -> Optional[List[CollectorTableConfig]]:
71
+ if ask_collector_config_cache_enabled():
72
+ return self.ByParentNameCache.get(parent_name)
73
+ else:
74
+ return None
75
+
76
+ def remove_configs_by_parent_name(self, parent_name: str) -> Optional[List[CollectorTableConfig]]:
77
+ if ask_collector_config_cache_enabled():
78
+ existing_configs: Optional[List[CollectorTableConfig]] = self.ByParentNameCache.remove(parent_name)
79
+ return existing_configs
80
+ else:
81
+ return None
82
+
83
+ def clear(self) -> None:
84
+ self.ByNameCache.clear()
85
+ self.ByTableNameCache.clear()
86
+ self.ByParentNameCache.clear()
87
+
88
+
89
+ table_config_cache = TableConfigCache()
@@ -1,3 +1,5 @@
1
1
  from .constants import CHANGE_RECORD_ID, TENANT_ID, IS_MERGED, LEFT_BRACE, RIGHT_BRACE, COMMA, \
2
2
  IS_POSTED, CHANGE_JSON_ID, WAVE, IS_FINISHED, IS_EXTRACTED, MODEL_TRIGGER_ID
3
- from .settings import ask_lock_clean_interval, ask_lock_clean_timeout, ask_partial_size
3
+ from .settings import ask_lock_clean_interval, ask_lock_clean_timeout, ask_partial_size, \
4
+ ask_collector_config_cache_enabled
5
+ from .exception import CollectorKernelException
@@ -0,0 +1,2 @@
1
+ class CollectorKernelException(Exception):
2
+ pass
@@ -9,6 +9,8 @@ class CollectorSettings(BaseSettings):
9
9
  LOCK_CLEAN_TIMEOUT: int = 3600
10
10
  PARTIAL_SIZE: int = 100
11
11
 
12
+ COLLECTOR_CONFIG_CACHE_ENABLED: bool = True # enable collector config cache heart beat
13
+
12
14
  class Config:
13
15
  # secrets_dir = '/var/run'
14
16
  env_file = '.env'
@@ -30,3 +32,7 @@ def ask_lock_clean_timeout() -> int:
30
32
 
31
33
  def ask_partial_size() -> int:
32
34
  return collector_settings.PARTIAL_SIZE
35
+
36
+
37
+ def ask_collector_config_cache_enabled() -> bool:
38
+ return collector_settings.COLLECTOR_CONFIG_CACHE_ENABLED
@@ -6,3 +6,4 @@ from .extract_source import SourceTableExtractor
6
6
  from .task_service import get_task_service
7
7
  from .criteria_builder import CriteriaBuilder
8
8
  from .extract_utils import build_audit_column_criteria, cal_array2d_diff, build_data_id, get_data_id
9
+ from .table_config_service import get_table_config_service
@@ -3,6 +3,7 @@ from typing import Optional, Dict, Any, Tuple
3
3
 
4
4
  from watchmen_auth import PrincipalService
5
5
  from watchmen_collector_kernel.model import CollectorTableConfig
6
+ from .table_config_service import get_table_config_service
6
7
  from .extract_source import SourceTableExtractor
7
8
  from watchmen_collector_kernel.storage import get_collector_table_config_service
8
9
  from watchmen_storage import TransactionalStorageSPI, SnowflakeGenerator
@@ -23,6 +24,7 @@ class DataCaptureService:
23
24
  self.collector_table_config_service = get_collector_table_config_service(self.meta_storage,
24
25
  self.snowflake_generator,
25
26
  self.principal_service)
27
+ self.table_config_service = get_table_config_service(self.principal_service)
26
28
 
27
29
  def find_data_by_data_id(self, config: CollectorTableConfig, data_id: Dict) -> Optional[Dict[str, Any]]:
28
30
  return SourceTableExtractor(config, self.principal_service).find_by_id(data_id)
@@ -30,7 +32,7 @@ class DataCaptureService:
30
32
  def find_parent_node(self, config: CollectorTableConfig,
31
33
  data_: Dict) -> Tuple[CollectorTableConfig, Optional[Dict[str, Any]]]:
32
34
  if config.parentName:
33
- parent_config = self.collector_table_config_service.find_by_name(config.parentName)
35
+ parent_config = self.table_config_service.find_by_name(config.parentName)
34
36
  parent_data = SourceTableExtractor(parent_config, self.principal_service).find(
35
37
  ArrayHelper(config.joinKeys).map(lambda join_key: build_criteria_by_join_key(join_key, data_)).to_list()
36
38
  )
@@ -44,7 +46,7 @@ class DataCaptureService:
44
46
  def build_json(self,
45
47
  config: CollectorTableConfig,
46
48
  data: Dict):
47
- child_configs = self.collector_table_config_service.find_by_parent_name(config.name)
49
+ child_configs = self.table_config_service.find_by_parent_name(config.name)
48
50
  if child_configs:
49
51
  ArrayHelper(child_configs).map(lambda child_config: self.get_child_data(child_config, data))
50
52
 
@@ -0,0 +1,35 @@
1
+ from typing import Optional
2
+
3
+ from watchmen_meta.common import ask_meta_storage, ask_snowflake_generator
4
+
5
+ from watchmen_collector_kernel.storage import get_collector_model_config_service
6
+ from watchmen_collector_kernel.cache import CollectorCacheService
7
+ from watchmen_collector_kernel.common import CollectorKernelException
8
+ from watchmen_collector_kernel.model import CollectorModelConfig
9
+
10
+ from watchmen_auth import PrincipalService
11
+
12
+
13
+ class ModelConfigService:
14
+
15
+ def __init__(self, principal_service: PrincipalService):
16
+ self.principalService = principal_service
17
+
18
+ def find_by_name(self, model_name: str) -> Optional[CollectorModelConfig]:
19
+ config = CollectorCacheService.model_config().get(model_name)
20
+ if config is not None:
21
+ return config
22
+
23
+ storage_service = get_collector_model_config_service(
24
+ ask_meta_storage(), ask_snowflake_generator(), self.principalService
25
+ )
26
+ model_config: CollectorModelConfig = storage_service.find_by_name(model_name)
27
+ if model_config is None:
28
+ return None
29
+
30
+ CollectorCacheService.model_config().put(model_config)
31
+ return model_config
32
+
33
+
34
+ def get_model_config_service(principal_service: PrincipalService) -> ModelConfigService:
35
+ return ModelConfigService(principal_service)
@@ -0,0 +1,70 @@
1
+ from typing import Optional, List
2
+
3
+ from watchmen_utilities import is_blank
4
+
5
+ from watchmen_meta.common import ask_meta_storage, ask_snowflake_generator
6
+
7
+ from watchmen_collector_kernel.storage import get_collector_table_config_service
8
+ from watchmen_collector_kernel.cache import CollectorCacheService
9
+ from watchmen_collector_kernel.common import CollectorKernelException
10
+ from watchmen_collector_kernel.model import CollectorTableConfig
11
+
12
+ from watchmen_auth import PrincipalService
13
+
14
+
15
+ class TableConfigService:
16
+
17
+ def __init__(self, principal_service: PrincipalService):
18
+ self.principalService = principal_service
19
+
20
+ def find_by_table_name(self, table_name: str) -> Optional[CollectorTableConfig]:
21
+ config = CollectorCacheService.table_config().get_config_by_table_name(table_name)
22
+ if config is not None:
23
+ return config
24
+
25
+ storage_service = get_collector_table_config_service(
26
+ ask_meta_storage(), ask_snowflake_generator(), self.principalService
27
+ )
28
+ table_config: CollectorTableConfig = storage_service.find_by_table_name(table_name)
29
+ if table_config is None:
30
+ return None
31
+
32
+ CollectorCacheService.table_config().put_config_by_table_name(table_config)
33
+ return table_config
34
+
35
+ def find_by_name(self, name: str) -> Optional[CollectorTableConfig]:
36
+ config = CollectorCacheService.table_config().get_config_by_name(name)
37
+ if config is not None:
38
+ return config
39
+
40
+ storage_service = get_collector_table_config_service(
41
+ ask_meta_storage(), ask_snowflake_generator(), self.principalService
42
+ )
43
+ table_config: CollectorTableConfig = storage_service.find_by_name(name)
44
+ if table_config is None:
45
+ return None
46
+
47
+ CollectorCacheService.table_config().put_config_by_name(table_config)
48
+ return table_config
49
+
50
+ def find_by_parent_name(self, parent_name: Optional[str]) -> Optional[List[CollectorTableConfig]]:
51
+ if is_blank(parent_name):
52
+ return None
53
+
54
+ configs = CollectorCacheService.table_config().get_configs_by_parent_name(parent_name)
55
+ if configs is not None:
56
+ return configs
57
+
58
+ storage_service = get_collector_table_config_service(
59
+ ask_meta_storage(), ask_snowflake_generator(), self.principalService
60
+ )
61
+ table_configs: List[CollectorTableConfig] = storage_service.find_by_parent_name(parent_name)
62
+ if table_configs is None:
63
+ return None
64
+
65
+ CollectorCacheService.table_config().put_configs_by_parent_name(parent_name, table_configs)
66
+ return table_configs
67
+
68
+
69
+ def get_table_config_service(principal_service: PrincipalService) -> TableConfigService:
70
+ return TableConfigService(principal_service)