| 1311 | |
| 1312 | |
| 1313 | class SXTMaterializedView(SXTResource): |
| 1314 | __ri__: int |
| 1315 | |
| 1316 | def __init__(self, name:str='', from_file:Path=None, default_user:SXTUser = None, |
| 1317 | private_key:str = '', new_keypair:bool = False, key_manager:SXTKeyManager = None, |
| 1318 | application_name:str = None, start_time:datetime = None, |
| 1319 | default_local_folder:Path = None, |
| 1320 | logger:logging.Logger = None, SpaceAndTime_parent:object = None) -> None: |
| 1321 | """-------------------- |
| 1322 | Creates a new Space and Time Materialized View object. |
| 1323 | |
| 1324 | Accepts a good number of settings during init, either individually (name, private_key, |
| 1325 | etc.) or use from_file to pass in Path to a save() file to reload previous config. |
| 1326 | Similarly, object parameters can be passed in individually (application_name, logger, |
| 1327 | key_manager, default_user) or pass in the SpaceAndTime_parent object, and those objects |
| 1328 | will be inherited automatically. The SpaceAndTime parameters are loaded first, |
| 1329 | overridden by anything in the from_file, overridden by individual parameters. |
| 1330 | |
| 1331 | Args: |
| 1332 | name (str): Name of Schema.ViewName |
| 1333 | from_file (Path): Path location of a saved file to load from. |
| 1334 | default_user (SXTUser): User to use when no other user is specified. |
| 1335 | private_key (str): Private key for the Resource (not user), in Base64, Hex, or Binary. |
| 1336 | new_keypair (bool): If True, creates a new keypairs, overriding key_manager but not private_key (if set). |
| 1337 | key_manager (SXTKeyManager): Key manager object |
| 1338 | application_name (str): Name of the application, for logging and Space And Time query logging (if enabled). |
| 1339 | start_time (datetime): Starting time of the process (for uniformity across objects). |
| 1340 | default_local_folder (Path): default local path for saving / loading files. |
| 1341 | logger (Logger): Python Logger object, with which to log all activity. |
| 1342 | SpaceAndTime_parent (SpaceAndTime): parent SpaceAndTime class object to inherit default_user, key_manager, application_name, and logger. |
| 1343 | """ |
| 1344 | self.resource_type = SXTResourceType.MATERIALIZED_VIEW |
| 1345 | self.__foname__ = 'mat_views' |
| 1346 | super().__init__(name, from_file, default_user, private_key, new_keypair, key_manager, application_name, start_time, default_local_folder, logger, SpaceAndTime_parent) |
| 1347 | self.__ri__ = 1440 |
| 1348 | self.__allprops__.insert(2, 'refresh_interval') |
| 1349 | self.__with__= {"public_key":"{public_key}", "refresh_interval":"{refresh_interval}"} |
| 1350 | self.__existfunc__ = self.user.base_api.discovery_get_views |
| 1351 | |
| 1352 | @property |
| 1353 | def matview_name(self) ->str: |
| 1354 | return self.resource_name |
| 1355 | @matview_name.setter |
| 1356 | def matview_name(self, value): |
| 1357 | self.resource_name = value |
| 1358 | |
| 1359 | @property |
| 1360 | def refresh_interval(self) -> int: |
| 1361 | return self.__ri__ |
| 1362 | @refresh_interval.setter |
| 1363 | def refresh_interval(self, value): |
| 1364 | if value >= 1440: |
| 1365 | self.__ri__ = value |
| 1366 | else: |
| 1367 | raise SxTArgumentError('Current limit to a Materialized View refresh is once every 24 hours // 1440 minutes', logger=self.logger) |
| 1368 | |
| 1369 | @property |
| 1370 | def create_ddl_sample(self) -> str: |