Source code for ultipa.operate.schema_extra
from ultipa.configuration.RequestConfig import RequestConfig
from ultipa.operate.base_extra import BaseExtra
from ultipa.structs import Schema
from ultipa.structs import DBType
from ultipa.types import ULTIPA, ULTIPA_REQUEST, ULTIPA_RESPONSE
from ultipa.utils import UQLMAKER, CommandList
BOOL_KEYS = ["index", "lte"]
REPLACE_KEYS = {
"name": "schemaName",
"type": "propertyType",
}
[docs]
class SchemaExtra(BaseExtra):
'''
Prcessing class that defines settings for schema related operations.
'''
[docs]
def createSchema(self, schema: Schema,
requestConfig: RequestConfig = RequestConfig())->ULTIPA_RESPONSE.UltipaResponse:
'''
Create a schema.
Args:
schema: An object of Schema class
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
command = schema.DBType == DBType.DBNODE and CommandList.createNodeSchema or CommandList.createEdgeSchema
commandP = [f"`{schema.name}`"]
if schema.description:
commandP.append(schema.description)
uqlMaker = UQLMAKER(command=command, commonParams=requestConfig)
uqlMaker.setCommandParams(commandP=commandP)
res = self.uqlSingle(uqlMaker=uqlMaker)
return res
[docs]
def listSchema(self, dbType: DBType = None, schemaName: str = None,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.UltipaResponse:
'''
List schema(s).
Args:
dbType: The DBType of data (DBNODE or DBEDGE), show both types of schemas by default
schemaName: The name of designated schema, or show all schemas by default
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
return self.showSchema(dbType, schemaName, requestConfig)
[docs]
def showSchema(self, dbType: DBType = None, schemaName: str = None,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.UltipaResponse:
'''
Show schema(s).
Args:
dbType: The DBType of data (DBNODE or DBEDGE), show both types of schemas by default
schemaName: The name of designated schema, or show all schemas by default
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
if dbType != None:
if dbType == DBType.DBNODE:
command = CommandList.showNodeSchema
elif dbType == DBType.DBEDGE:
command = CommandList.showEdgeSchema
else:
command = CommandList.showSchema
if schemaName:
commandP = '@' + schemaName
else:
commandP = ''
else:
command = CommandList.showSchema
commandP = ''
uqlMaker = UQLMAKER(command=command, commandP=commandP, commonParams=requestConfig)
res = self.uqlSingle(uqlMaker)
return res
[docs]
def alterSchema(self, dbType: DBType, schemaName: str, newSchemaName: str, description: str = None,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.UltipaResponse:
'''
Alter schema.
Args:
dbType: The DBType of data (DBNODE or DBEDGE)
schemaName: The name of schema
newSchemaName: The new name of schema
description: The new description of schema
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
command = dbType == DBType.DBNODE and CommandList.alterNodeSchema or CommandList.alterEdgeSchema
commandP = '@' + schemaName
update_dict = {}
if newSchemaName:
update_dict.setdefault('name', newSchemaName)
if description:
update_dict.update({'description': description})
uqlMaker = UQLMAKER(command=command, commandP=commandP, commonParams=requestConfig)
uqlMaker.addParam("set", update_dict)
res = self.uqlSingle(uqlMaker=uqlMaker)
return res
[docs]
def dropSchema(self, dbType: DBType, schemaName: str,
requestConfig: RequestConfig = RequestConfig()) -> ULTIPA_RESPONSE.UltipaResponse:
'''
Drop schema.
Args:
dbType: The DBType of data (DBNODE or DBEDGE)
schemaName: The name of schema
requestConfig: An object of RequestConfig class
Returns:
UltipaResponse
'''
command = dbType == DBType.DBNODE and CommandList.dropNodeSchema or CommandList.dropEdgeSchema
commandP = '@' + schemaName
uqlMaker = UQLMAKER(command=command, commandP=commandP, commonParams=requestConfig)
res = self.uqlSingle(uqlMaker=uqlMaker)
return res