Source code for ultipa.structs.Property

# -*- coding: utf-8 -*-
# @Time    : 2023/8/1 14:46
# @Author  : Ultipa
# @Email   : [email protected]
# @File    : Property.py
from typing import List

from ultipa.structs.BaseModel import BaseModel
from ultipa.structs.PropertyType import PropertyTypeStr, PropertyType

[docs] class Property: ''' Data class for property. ''' name: str description: str lte: bool schema: str type: PropertyTypeStr subTypes: List[PropertyTypeStr] def __init__(self, name: str, type: PropertyTypeStr = PropertyTypeStr.PROPERTY_STRING, description: str = '', subTypes: List[PropertyTypeStr] = None,lte: bool = None,schema: str=None): self.type = type self.subTypes = subTypes self.description = description self.name = name self.lte = lte self.schema = schema _PropertyMap = { "string": PropertyType.PROPERTY_STRING, "int32": PropertyType.PROPERTY_INT32, "int64": PropertyType.PROPERTY_INT64, "uint32": PropertyType.PROPERTY_UINT32, "uint64": PropertyType.PROPERTY_UINT64, "float": PropertyType.PROPERTY_FLOAT, "double": PropertyType.PROPERTY_DOUBLE, "datetime": PropertyType.PROPERTY_DATETIME, "timestamp": PropertyType.PROPERTY_TIMESTAMP, "text": PropertyType.PROPERTY_TEXT, "blob": PropertyType.PROPERTY_BLOB, "_id": PropertyType.PROPERTY_ID, "_uuid": PropertyType.PROPERTY_UUID, "_from": PropertyType.PROPERTY_FROM, "_to": PropertyType.PROPERTY_TO, "_from_uuid": PropertyType.PROPERTY_FROM_UUID, "_to_uuid": PropertyType.PROPERTY_TO_UUID, "_ignore": PropertyType.PROPERTY_IGNORE, "unset": PropertyType.PROPERTY_UNSET, "point": PropertyType.PROPERTY_POINT, "decimal": PropertyType.PROPERTY_DECIMAL, "list": PropertyType.PROPERTY_LIST, "set": PropertyType.PROPERTY_SET, "map": PropertyType.PROPERTY_MAP, "null": PropertyType.PROPERTY_NULL, } _PropertyReverseMap = { PropertyType.PROPERTY_STRING: "string", PropertyType.PROPERTY_INT32: "int32", PropertyType.PROPERTY_INT64: "int64", PropertyType.PROPERTY_UINT32: "uint32", PropertyType.PROPERTY_UINT64: "uint64", PropertyType.PROPERTY_FLOAT: "float", PropertyType.PROPERTY_DOUBLE: "double", PropertyType.PROPERTY_DATETIME: "datetime", PropertyType.PROPERTY_TIMESTAMP: "timestamp", PropertyType.PROPERTY_TEXT: "text", PropertyType.PROPERTY_BLOB: "blob", PropertyType.PROPERTY_ID: "_id", PropertyType.PROPERTY_UUID: "_uuid", PropertyType.PROPERTY_FROM: "_from", PropertyType.PROPERTY_TO: "_to", PropertyType.PROPERTY_FROM_UUID: "_from_uuid", PropertyType.PROPERTY_TO_UUID: "_to_uuid", PropertyType.PROPERTY_IGNORE: "_ignore", PropertyType.PROPERTY_UNSET: "unset", PropertyType.PROPERTY_POINT: "point", PropertyType.PROPERTY_DECIMAL: "decimal", PropertyType.PROPERTY_LIST: "list", PropertyType.PROPERTY_SET: "set", PropertyType.PROPERTY_MAP: "map", PropertyType.PROPERTY_NULL: "null", }
[docs] def setSubTypesbyType(self, type: str): if "string" in type: self.subTypes = [PropertyType.PROPERTY_STRING] if "int32" in type: self.subTypes = [PropertyType.PROPERTY_INT32] if "uint32" in type: self.subTypes = [PropertyType.PROPERTY_UINT32] if "int64" in type: self.subTypes = [PropertyType.PROPERTY_INT64] if "uint64" in type: self.subTypes = [PropertyType.PROPERTY_UINT64] if "float" in type: self.subTypes = [PropertyType.PROPERTY_FLOAT] if "double" in type: self.subTypes = [PropertyType.PROPERTY_DOUBLE] if "datetime" in type: self.subTypes = [PropertyType.PROPERTY_DATETIME] if "timestamp" in type: self.subTypes = [PropertyType.PROPERTY_TIMESTAMP] if "text" in type: self.subTypes = [PropertyType.PROPERTY_TEXT]
[docs] def isIdType(self) -> bool: idTypes = [ PropertyType.PROPERTY_ID, PropertyType.PROPERTY_TO, PropertyType.PROPERTY_UUID, PropertyType.PROPERTY_FROM, PropertyType.PROPERTY_FROM_UUID, PropertyType.PROPERTY_TO_UUID, ] return self.type in idTypes
[docs] def isIgnore(self): return self.type == PropertyType.PROPERTY_IGNORE
[docs] def setTypeStr(self, value): self.type = self.getStringByPropertyType(value)
[docs] def setTypeInt(self, value): self.type = self.getPropertyTypeByString(value)
[docs] def getStringType(self): return self.getStringByPropertyType(self.type)
[docs] def getPropertyTypeByString(self, v): if not self._PropertyMap.get(v): if "[" in v: self.setSubTypesbyType(v) return PropertyType.PROPERTY_LIST return self._PropertyMap.get(v)
[docs] def getStringByPropertyType(self, v): return self._PropertyReverseMap[v]
@staticmethod def _getStringByPropertyType(v): return Property._PropertyReverseMap[v] @staticmethod def _getPropertyTypeByString(v): return Property._PropertyMap.get(v)