Source code for ultipa.operate.property_extra
from ultipa.configuration.RequestConfig import RequestConfig
from ultipa.operate.base_extra import BaseExtra
from ultipa.structs import DBType
from ultipa.structs.Property import Property
from ultipa.types import ULTIPA, ULTIPA_RESPONSE
from ultipa.utils import UQLMAKER, CommandList
from ultipa.utils.ResposeFormat import ResponseKeyFormat
from ultipa.utils.propertyUtils import getPropertyTypesDesc
BOOL_KEYS = ["index", "lte"]
REPLACE_KEYS = {
"name": "propertyName",
"type": "propertyType",
}
[docs]
class PropertyExtra(BaseExtra):
'''
Processing class that defines settings for property related operations.
'''
[docs]
def listProperty(self, requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.ResponseListProperty:
'''
List all properties.
Args:
requestConfig: An object of RequestConfig class
Returns:
ResponseListProperty
'''
return self.showProperty(requestConfig)
[docs]
def showProperty(self, requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.ResponseListProperty:
'''
Show all properties.
Args:
requestConfig: An object of RequestConfig class
Returns:
ResponseListProperty
'''
command = CommandList.showProperty
uqlMaker = UQLMAKER(command=command, commonParams=requestConfig)
res = self.UqlListSimple(uqlMaker=uqlMaker,
responseKeyFormat=ResponseKeyFormat(boolKeys=BOOL_KEYS),
isSingleOne=False)
return res
[docs]
def getProperty(self, dbType: DBType, schema: str = None,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.ResponseGetProperty:
'''
Get a property.
Args:
dbType: The DBType of data (DBNODE or DBEDGE)
schema: The name of schema
requestConfig: An object of RequestConfig class
Returns:
ResponseGetProperty
'''
if dbType != None:
if dbType == DBType.DBNODE:
command = CommandList.showNodeProperty
elif dbType == DBType.DBEDGE:
command = CommandList.showEdgeProperty
else:
command = CommandList.showNodeProperty
if schema:
commandp = ['@' + f"`{schema}`"]
else:
commandp = ''
else:
command = CommandList.showNodeProperty
commandp = ''
uqlMaker = UQLMAKER(command=command, commonParams=requestConfig)
uqlMaker.setCommandParams(commandP=commandp)
res = self.UqlListSimple(uqlMaker=uqlMaker,
responseKeyFormat=ResponseKeyFormat(keyReplace=REPLACE_KEYS, boolKeys=BOOL_KEYS),
isSingleOne=False)
return res
[docs]
def createProperty(self, dbType: DBType, schema: str, prop: Property,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.UltipaResponse:
'''
Create a property.
Args:
dbType: The DBType of data (DBNODE or DBEDGE)
schema: The name of schema
prop: An object of Property class
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
command = dbType == DBType.DBNODE and CommandList.createNodeProperty or CommandList.createEdgeProperty
commandP = ["@" + f"`{schema}`", f"`{prop.name}`",
getPropertyTypesDesc(prop.type, prop.subTypes)]
if prop.description:
commandP.append(prop.description)
uqlMaker = UQLMAKER(command=command, commonParams=requestConfig)
uqlMaker.setCommandParams(commandP=commandP)
res = self.uqlSingle(uqlMaker)
return res
[docs]
def dropProperty(self, dbType: DBType, schema: str, property: str,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.UltipaResponse:
'''
Drop a property.
Args:
dbType: The DBType of data (DBNODE or DBEDGE)
schema: The name of schema
property: The name of property
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
command = dbType == DBType.DBNODE and CommandList.dropNodeProperty or CommandList.dropEdgeProperty
commandP = "@`%s`.`%s`" % (schema, property)
uqlMaker = UQLMAKER(command=command, commonParams=requestConfig)
uqlMaker.setCommandParams(commandP=commandP)
res = self.uqlSingle(uqlMaker)
return res
[docs]
def alterProperty(self, dbType: DBType, schema: str, property: str, newProperty: str = None,
description: str = None,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.UltipaResponse:
'''
Alter a property.
Args:
dbType: The DBType of data (DBNODE or DBEDGE)
schema: The name of schema
property: The name of property
newProperty: The new name of property
description: The new description of property
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
command = dbType == DBType.DBNODE and CommandList.alterNodeProperty or CommandList.alterEdgeProperty
commandP = "@`%s`.`%s`" % (schema, property)
update_dict = {}
if newProperty:
update_dict.setdefault('name', newProperty)
if description:
update_dict.update({'description': description})
uqlMaker = UQLMAKER(command=command, commonParams=requestConfig)
uqlMaker.setCommandParams(commandP)
uqlMaker.addParam("set", update_dict)
res = self.uqlSingle(uqlMaker)
return res