|
4 | 4 |
|
5 | 5 | from __future__ import annotations
|
6 | 6 |
|
7 |
| -from typing import ClassVar, List, Optional |
| 7 | +from typing import ClassVar, List, Optional, overload |
8 | 8 |
|
9 | 9 | from pydantic.v1 import Field, validator
|
10 | 10 |
|
11 | 11 | from pyatlan.model.fields.atlan_fields import RelationField, TextField
|
| 12 | +from pyatlan.utils import init_guid, validate_required_fields |
12 | 13 |
|
| 14 | +from ...enums import AtlanConnectorType |
13 | 15 | from .s_q_l import SQL
|
14 | 16 |
|
15 | 17 |
|
16 | 18 | class Procedure(SQL):
|
17 | 19 | """Description"""
|
18 | 20 |
|
| 21 | + @overload |
| 22 | + @classmethod |
| 23 | + def creator( |
| 24 | + cls, |
| 25 | + *, |
| 26 | + name: str, |
| 27 | + schema_qualified_name: str, |
| 28 | + definition: str, |
| 29 | + ) -> Procedure: ... |
| 30 | + |
| 31 | + @overload |
| 32 | + @classmethod |
| 33 | + def creator( |
| 34 | + cls, |
| 35 | + *, |
| 36 | + name: str, |
| 37 | + schema_qualified_name: str, |
| 38 | + schema_name: str, |
| 39 | + database_name: str, |
| 40 | + database_qualified_name: str, |
| 41 | + connection_qualified_name: str, |
| 42 | + definition: str, |
| 43 | + ) -> Procedure: ... |
| 44 | + |
| 45 | + @classmethod |
| 46 | + @init_guid |
| 47 | + def creator( |
| 48 | + cls, |
| 49 | + *, |
| 50 | + name: str, |
| 51 | + definition: str, |
| 52 | + schema_qualified_name: str, |
| 53 | + schema_name: Optional[str] = None, |
| 54 | + database_name: Optional[str] = None, |
| 55 | + database_qualified_name: Optional[str] = None, |
| 56 | + connection_qualified_name: Optional[str] = None, |
| 57 | + ) -> Procedure: |
| 58 | + attributes = Procedure.Attributes.create( |
| 59 | + name=name, |
| 60 | + definition=definition, |
| 61 | + schema_qualified_name=schema_qualified_name, |
| 62 | + schema_name=schema_name, |
| 63 | + database_name=database_name, |
| 64 | + database_qualified_name=database_qualified_name, |
| 65 | + connection_qualified_name=connection_qualified_name, |
| 66 | + ) |
| 67 | + return cls(attributes=attributes) |
| 68 | + |
19 | 69 | type_name: str = Field(default="Procedure", allow_mutation=False)
|
20 | 70 |
|
21 | 71 | @validator("type_name")
|
@@ -70,6 +120,56 @@ class Attributes(SQL.Attributes):
|
70 | 120 | default=None, description=""
|
71 | 121 | ) # relationship
|
72 | 122 |
|
| 123 | + @classmethod |
| 124 | + @init_guid |
| 125 | + def create( |
| 126 | + cls, |
| 127 | + *, |
| 128 | + name: str, |
| 129 | + definition: str, |
| 130 | + schema_qualified_name: Optional[str] = None, |
| 131 | + schema_name: Optional[str] = None, |
| 132 | + database_name: Optional[str] = None, |
| 133 | + database_qualified_name: Optional[str] = None, |
| 134 | + connection_qualified_name: Optional[str] = None, |
| 135 | + ) -> Procedure.Attributes: |
| 136 | + validate_required_fields( |
| 137 | + ["name", "definition", "schema_qualified_name"], |
| 138 | + [name, definition, schema_qualified_name], |
| 139 | + ) |
| 140 | + assert schema_qualified_name # noqa: S101 |
| 141 | + if connection_qualified_name: |
| 142 | + connector_name = AtlanConnectorType.get_connector_name( |
| 143 | + connection_qualified_name |
| 144 | + ) |
| 145 | + else: |
| 146 | + connection_qn, connector_name = AtlanConnectorType.get_connector_name( |
| 147 | + schema_qualified_name, "schema_qualified_name", 5 |
| 148 | + ) |
| 149 | + |
| 150 | + fields = schema_qualified_name.split("/") |
| 151 | + qualified_name = f"{schema_qualified_name}/_procedures_/{name}" |
| 152 | + connection_qualified_name = connection_qualified_name or connection_qn |
| 153 | + database_name = database_name or fields[3] |
| 154 | + schema_name = schema_name or fields[4] |
| 155 | + database_qualified_name = ( |
| 156 | + database_qualified_name |
| 157 | + or f"{connection_qualified_name}/{database_name}" |
| 158 | + ) |
| 159 | + |
| 160 | + return Procedure.Attributes( |
| 161 | + name=name, |
| 162 | + definition=definition, |
| 163 | + qualified_name=qualified_name, |
| 164 | + database_name=database_name, |
| 165 | + database_qualified_name=database_qualified_name, |
| 166 | + schema_name=schema_name, |
| 167 | + schema_qualified_name=schema_qualified_name, |
| 168 | + atlan_schema=Schema.ref_by_qualified_name(schema_qualified_name), |
| 169 | + connector_name=connector_name, |
| 170 | + connection_qualified_name=connection_qualified_name, |
| 171 | + ) |
| 172 | + |
73 | 173 | attributes: Procedure.Attributes = Field(
|
74 | 174 | default_factory=lambda: Procedure.Attributes(),
|
75 | 175 | description=(
|
|
0 commit comments