|
|
|
|
@ -19,6 +19,7 @@ class SwiftModelGenerator: |
|
|
|
|
is_sync = model_data.get("synchronizable", False) |
|
|
|
|
is_observable = model_data.get("observable", False) |
|
|
|
|
properties = model_data["properties"] |
|
|
|
|
did_set_properties = [] |
|
|
|
|
|
|
|
|
|
# Get protocol specific configurations |
|
|
|
|
resource = self.make_resource_name(model_name) |
|
|
|
|
@ -53,7 +54,16 @@ class SwiftModelGenerator: |
|
|
|
|
if prop.get("optional", False): |
|
|
|
|
swift_type += "?" |
|
|
|
|
default_value = prop.get("defaultValue", "nil" if prop.get("optional", False) else self._get_default_value(swift_type)) |
|
|
|
|
lines.append(f" public var {prop['name']}: {swift_type} = {default_value}") |
|
|
|
|
generate_didset = prop.get("generateDidSet", False) |
|
|
|
|
generate_didset_str = " {" if generate_didset else "" |
|
|
|
|
lines.append(f" public var {prop['name']}: {swift_type} = {default_value}{generate_didset_str}") |
|
|
|
|
if generate_didset: |
|
|
|
|
cap_name = prop['name'][0].upper() + prop['name'][1:] |
|
|
|
|
did_set_properties.append(cap_name) |
|
|
|
|
lines.append(" didSet {") |
|
|
|
|
lines.append(f" self.didSet{cap_name}()") |
|
|
|
|
lines.append(" }") |
|
|
|
|
lines.append(" }") |
|
|
|
|
|
|
|
|
|
lines.append("") |
|
|
|
|
|
|
|
|
|
@ -61,6 +71,11 @@ class SwiftModelGenerator: |
|
|
|
|
lines.extend(self._generate_constructor(model_name, properties)) |
|
|
|
|
lines.append("") |
|
|
|
|
|
|
|
|
|
# Add didSet |
|
|
|
|
if did_set_properties: |
|
|
|
|
lines.extend(self._generate_didset_methods(did_set_properties)) |
|
|
|
|
lines.append("") |
|
|
|
|
|
|
|
|
|
# CodingKeys |
|
|
|
|
lines.extend(self._generate_coding_keys(model_name, properties, is_observable)) |
|
|
|
|
lines.append("") |
|
|
|
|
@ -148,6 +163,12 @@ class SwiftModelGenerator: |
|
|
|
|
|
|
|
|
|
return lines |
|
|
|
|
|
|
|
|
|
def _generate_didset_methods(self, properties) -> List[str]: |
|
|
|
|
lines = [] |
|
|
|
|
for prop in properties: |
|
|
|
|
lines.append(f" public func didSet{prop}() {{}}") |
|
|
|
|
return lines |
|
|
|
|
|
|
|
|
|
def _generate_foreign_key_methods(self, properties: List[Dict[str, Any]]) -> List[str]: |
|
|
|
|
lines = [] |
|
|
|
|
for prop in properties: |
|
|
|
|
|