diff --git a/functions/definition/models.yaml b/functions/definition/models.yaml index 1d4d832..c134cc8 100644 --- a/functions/definition/models.yaml +++ b/functions/definition/models.yaml @@ -542,99 +542,3 @@ FbMappingResult: # NOTE: The key is usergroupId type: map valueType: boolean - -# USER AND USER GROUP - -FbUserGroup: - model: alias - # path: userGroups/{userGroupId} - docs: Represents a usergroup - type: - type: object - fields: - # TODO: this is an enum - createdAt: - type: int - createdBy: - type: string - description: - type: string - name: - type: string - # NOTE: We can remove this @deprecated - nameKey: - type: string - users: - type: - type: map - valueType: unknown - -FbUserGroupObsolete: - model: alias - # path: user_groups/{userGroupId} - docs: Represents a usergroup - type: - type: object - fields: - name: - type: string - description: - type: string - -FbUserGroupMembership: - model: alias - # path: userGroupMembershipLogs/{userGroupId} - docs: Represents a user contribution - type: - type: object - fields: - action: - type: FbEnumUserGroupMembershipAction - timestamp: - type: timestamp - userGroupId: - type: string - userId: - type: string - -FbUser: - model: alias - # path: users/{userId} - docs: Represents a user - type: - type: object - fields: - created: - type: timestamp - userName: - type: string - # NOTE: We can remove this @deprecated - userNameKey: - type: string - username: - type: string - # NOTE: We can remove this @deprecated - usernameKey: - type: string - accessibility: - optional: true - type: boolean - userGroups: - optional: true - type: - type: map - valueType: unknown - -FbUserContribution: - model: alias - # path: userContributions/{userId}/{projectId}/{groupId} - docs: Represents a user contribution - type: - type: object - fields: - endTime: - type: timestamp - startTime: - type: timestamp - timestamp: - type: timestamp diff --git a/functions/definition/user.yaml b/functions/definition/user.yaml new file mode 100644 index 0000000..bf0188b --- /dev/null +++ b/functions/definition/user.yaml @@ -0,0 +1,37 @@ +FbUserReadonlyType: + model: alias + docs: Represents user fields that cannot be updated from backend + type: + type: object + fields: + created: + type: timestamp + userName: + type: string + # NOTE: We can remove this @deprecated + userNameKey: + type: string + username: + type: string + # NOTE: We can remove this @deprecated + usernameKey: + type: string + accessibility: + optional: true + type: boolean + userGroups: + optional: true + type: + type: map + valueType: unknown + +FbUserUpdateInput: + model: alias + # path: users/{userId} + docs: Represents a user + type: + type: object + fields: + teamId: + type: string + optional: true diff --git a/functions/definition/userContribution.yaml b/functions/definition/userContribution.yaml new file mode 100644 index 0000000..f8c37e9 --- /dev/null +++ b/functions/definition/userContribution.yaml @@ -0,0 +1,13 @@ +FbUserContribution: + model: alias + # path: userContributions/{userId}/{projectId}/{groupId} + docs: Represents a user contribution + type: + type: object + fields: + endTime: + type: timestamp + startTime: + type: timestamp + timestamp: + type: timestamp diff --git a/functions/definition/userGroup.yaml b/functions/definition/userGroup.yaml new file mode 100644 index 0000000..0a41718 --- /dev/null +++ b/functions/definition/userGroup.yaml @@ -0,0 +1,51 @@ +FbUserGroup: + model: alias + # path: userGroups/{userGroupId} + docs: Represents a usergroup + type: + type: object + fields: + # TODO: this is an enum + createdAt: + type: int + createdBy: + type: string + description: + type: string + name: + type: string + # NOTE: We can remove this @deprecated + nameKey: + type: string + users: + type: + type: map + valueType: unknown + +FbUserGroupObsolete: + model: alias + # path: user_groups/{userGroupId} + docs: Represents a usergroup + type: + type: object + fields: + name: + type: string + description: + type: string + +FbUserGroupMembership: + model: alias + # path: userGroupMembershipLogs/{userGroupId} + docs: Represents a user contribution + type: + type: object + fields: + action: + type: FbEnumUserGroupMembershipAction + timestamp: + type: timestamp + userGroupId: + type: string + userId: + type: string diff --git a/functions/generated/pyfirebase/pyfirebase_mapswipe/extended_models.py b/functions/generated/pyfirebase/pyfirebase_mapswipe/extended_models.py index 8b0d1a6..d609708 100644 --- a/functions/generated/pyfirebase/pyfirebase_mapswipe/extended_models.py +++ b/functions/generated/pyfirebase/pyfirebase_mapswipe/extended_models.py @@ -14,7 +14,9 @@ class FbProject( class Config: # type: ignore[reportIncompatibleVariableOverride] use_enum_values = True frozen = True - extra = "forbid" + # NOTE: We need to allow extra fields as FbProject + # is not a complete project representation + extra = "allow" class FbMappingGroup( @@ -25,3 +27,13 @@ class Config: # type: ignore[reportIncompatibleVariableOverride] use_enum_values = True frozen = True extra = "forbid" + + +class FbUser( + models.FbUserUpdateInput, + models.FbUserReadonlyType, +): + class Config: # type: ignore[reportIncompatibleVariableOverride] + use_enum_values = True + frozen = True + extra = "forbid" diff --git a/functions/generated/pyfirebase/pyfirebase_mapswipe/models.py b/functions/generated/pyfirebase/pyfirebase_mapswipe/models.py index 7786344..7d775fe 100644 --- a/functions/generated/pyfirebase/pyfirebase_mapswipe/models.py +++ b/functions/generated/pyfirebase/pyfirebase_mapswipe/models.py @@ -581,92 +581,6 @@ def __setattr__(self, name: str, value: typing.Any) -> None: super().__setattr__(name, value) -class FbUserGroup(TypesyncModel): - """Represents a usergroup""" - - createdAt: int - createdBy: str - description: str - name: str - nameKey: str - users: dict[str, typing.Any] - - class Config: - use_enum_values = True - extra = "forbid" - - def __setattr__(self, name: str, value: typing.Any) -> None: - super().__setattr__(name, value) - - -class FbUserGroupObsolete(TypesyncModel): - """Represents a usergroup""" - - name: str - description: str - - class Config: - use_enum_values = True - extra = "forbid" - - def __setattr__(self, name: str, value: typing.Any) -> None: - super().__setattr__(name, value) - - -class FbUserGroupMembership(TypesyncModel): - """Represents a user contribution""" - - action: FbEnumUserGroupMembershipAction - timestamp: datetime.datetime - userGroupId: str - userId: str - - class Config: - use_enum_values = True - extra = "forbid" - - def __setattr__(self, name: str, value: typing.Any) -> None: - super().__setattr__(name, value) - - -class FbUser(TypesyncModel): - """Represents a user""" - - created: datetime.datetime - userName: str - userNameKey: str - username: str - usernameKey: str - accessibility: TypesyncUndefined | bool = UNDEFINED - userGroups: TypesyncUndefined | dict[str, typing.Any] = UNDEFINED - - class Config: - use_enum_values = True - extra = "forbid" - - def __setattr__(self, name: str, value: typing.Any) -> None: - if name == "accessibility" and value is None: - raise ValueError("'accessibility' field cannot be set to None") - if name == "userGroups" and value is None: - raise ValueError("'userGroups' field cannot be set to None") - super().__setattr__(name, value) - - -class FbUserContribution(TypesyncModel): - """Represents a user contribution""" - - endTime: datetime.datetime - startTime: datetime.datetime - timestamp: datetime.datetime - - class Config: - use_enum_values = True - extra = "forbid" - - def __setattr__(self, name: str, value: typing.Any) -> None: - super().__setattr__(name, value) - - class FbOrganisation(TypesyncModel): """Represents the requesting organisation.""" @@ -1004,6 +918,107 @@ def __setattr__(self, name: str, value: typing.Any) -> None: super().__setattr__(name, value) +class FbUserReadonlyType(TypesyncModel): + """Represents user fields that cannot be updated from backend""" + + created: datetime.datetime + userName: str + userNameKey: str + username: str + usernameKey: str + accessibility: TypesyncUndefined | bool = UNDEFINED + userGroups: TypesyncUndefined | dict[str, typing.Any] = UNDEFINED + + class Config: + use_enum_values = True + extra = "forbid" + + def __setattr__(self, name: str, value: typing.Any) -> None: + if name == "accessibility" and value is None: + raise ValueError("'accessibility' field cannot be set to None") + if name == "userGroups" and value is None: + raise ValueError("'userGroups' field cannot be set to None") + super().__setattr__(name, value) + + +class FbUserUpdateInput(TypesyncModel): + """Represents a user""" + + teamId: TypesyncUndefined | str = UNDEFINED + + class Config: + use_enum_values = True + extra = "forbid" + + def __setattr__(self, name: str, value: typing.Any) -> None: + if name == "teamId" and value is None: + raise ValueError("'teamId' field cannot be set to None") + super().__setattr__(name, value) + + +class FbUserContribution(TypesyncModel): + """Represents a user contribution""" + + endTime: datetime.datetime + startTime: datetime.datetime + timestamp: datetime.datetime + + class Config: + use_enum_values = True + extra = "forbid" + + def __setattr__(self, name: str, value: typing.Any) -> None: + super().__setattr__(name, value) + + +class FbUserGroup(TypesyncModel): + """Represents a usergroup""" + + createdAt: int + createdBy: str + description: str + name: str + nameKey: str + users: dict[str, typing.Any] + + class Config: + use_enum_values = True + extra = "forbid" + + def __setattr__(self, name: str, value: typing.Any) -> None: + super().__setattr__(name, value) + + +class FbUserGroupObsolete(TypesyncModel): + """Represents a usergroup""" + + name: str + description: str + + class Config: + use_enum_values = True + extra = "forbid" + + def __setattr__(self, name: str, value: typing.Any) -> None: + super().__setattr__(name, value) + + +class FbUserGroupMembership(TypesyncModel): + """Represents a user contribution""" + + action: FbEnumUserGroupMembershipAction + timestamp: datetime.datetime + userGroupId: str + userId: str + + class Config: + use_enum_values = True + extra = "forbid" + + def __setattr__(self, name: str, value: typing.Any) -> None: + super().__setattr__(name, value) + + class FbBackendWait(TypesyncModel): """Represents if to wait for firebase."""