Skip to content

Commit

Permalink
Mixins updates
Browse files Browse the repository at this point in the history
  • Loading branch information
akadlec committed Sep 2, 2021
1 parent d33c27a commit bcbe666
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 15 deletions.
2 changes: 1 addition & 1 deletion devices_module/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@
Devices module
"""

__version__ = "0.2.27"
__version__ = "0.2.28"
34 changes: 21 additions & 13 deletions devices_module/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
db: Database = Database()


class EntityCreatedMixin:
class EntityCreatedMixin(object):
"""
Entity created field mixin
Expand All @@ -50,16 +50,13 @@ class EntityCreatedMixin:
@author Adam Kadlec <adam.kadlec@fastybird.com>
"""
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)

# -----------------------------------------------------------------------------

def before_insert(self) -> None:
"""Before insert entity hook"""
self.created_at = datetime.datetime.now()
if isinstance(self, orm.Entity):
self.set({"created_at": datetime.datetime.now()})


class EntityUpdatedMixin:
class EntityUpdatedMixin(object):
"""
Entity updated field mixin
Expand All @@ -68,16 +65,13 @@ class EntityUpdatedMixin:
@author Adam Kadlec <adam.kadlec@fastybird.com>
"""
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

# -----------------------------------------------------------------------------

def before_update(self) -> None:
"""Before update entity hook"""
self.updated_at = datetime.datetime.now()
if isinstance(self, orm.Entity):
self.set({"updated_at": datetime.datetime.now()})


class EntityEventMixin:
class EntityEventMixin(object):
"""
Entity event mixin
Expand Down Expand Up @@ -143,6 +137,8 @@ class ConnectorEntity(EntityEventMixin, EntityCreatedMixin, EntityUpdatedMixin,
key: str = Required(str, column="connector_key", unique=True, max_len=50, nullable=False)
enabled: bool = Required(bool, column="connector_enabled", nullable=False, default=True)
params: Json or None = Optional(Json, column="params", nullable=True)
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

devices: List["DeviceConnectorEntity"] = Set("DeviceConnectorEntity", reverse="connector")
controls: List["ConnectorControlEntity"] = Set("ConnectorControlEntity", reverse="connector")
Expand Down Expand Up @@ -301,6 +297,8 @@ class ConnectorControlEntity(EntityCreatedMixin, EntityUpdatedMixin, db.Entity):

control_id: uuid.UUID = PrimaryKey(uuid.UUID, default=uuid.uuid4, column="control_id")
name: str = Optional(str, column="control_name", nullable=False)
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

connector: ConnectorEntity = Required("ConnectorEntity", reverse="controls", column="connector_id", nullable=False)

Expand Down Expand Up @@ -349,6 +347,8 @@ class DeviceEntity(EntityEventMixin, EntityCreatedMixin, EntityUpdatedMixin, db.
)
firmware_version: str or None = Optional(str, column="device_firmware_version", max_len=150, nullable=True)
params: Json or None = Optional(Json, column="params", nullable=True)
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

channels: List["ChannelEntity"] = Set("ChannelEntity", reverse="device")
properties: List["DevicePropertyEntity"] = Set("DevicePropertyEntity", reverse="device")
Expand Down Expand Up @@ -674,6 +674,8 @@ class DeviceControlEntity(EntityCreatedMixin, EntityUpdatedMixin, db.Entity):

control_id: uuid.UUID = PrimaryKey(uuid.UUID, default=uuid.uuid4, column="control_id")
name: str = Optional(str, column="control_name", nullable=False)
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

device: DeviceEntity = Required("DeviceEntity", reverse="controls", column="device_id", nullable=False)

Expand All @@ -691,6 +693,8 @@ class DeviceConnectorEntity(EntityEventMixin, EntityCreatedMixin, EntityUpdatedM

connector_id: uuid.UUID = PrimaryKey(uuid.UUID, default=uuid.uuid4, column="device_connector_id")
params: Json or None = Optional(Json, column="params", nullable=True)
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

device: DeviceEntity = Required("DeviceEntity", reverse="connector", column="device_id", nullable=False)
connector: ConnectorEntity = Required("ConnectorEntity", reverse="devices", column="connector_id", nullable=False)
Expand Down Expand Up @@ -747,6 +751,8 @@ class ChannelEntity(EntityEventMixin, EntityCreatedMixin, EntityUpdatedMixin, db
name: str or None = Optional(str, column="channel_name", nullable=True)
comment: str or None = Optional(str, column="channel_comment", nullable=True)
params: Json or None = Optional(Json, column="params", nullable=True)
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

device: DeviceEntity = Required("DeviceEntity", reverse="channels", column="device_id", nullable=False)
properties: List["ChannelPropertyEntity"] = Set("ChannelPropertyEntity", reverse="channel")
Expand Down Expand Up @@ -1042,6 +1048,8 @@ class ChannelControlEntity(EntityCreatedMixin, EntityUpdatedMixin, db.Entity):

control_id: uuid.UUID = PrimaryKey(uuid.UUID, default=uuid.uuid4, column="control_id")
name: str = Optional(str, column="control_name", nullable=False)
created_at: datetime.datetime or None = Optional(datetime.datetime, column="created_at", nullable=True)
updated_at: datetime.datetime or None = Optional(datetime.datetime, column="updated_at", nullable=True)

channel: ChannelEntity = Required("ChannelEntity", reverse="controls", column="channel_id", nullable=False)

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@fastybird/devices-module",
"version": "0.2.27",
"version": "0.2.28",
"description": "Devices module data model plugin",
"keywords": [
"devices",
Expand Down

0 comments on commit bcbe666

Please sign in to comment.