Cette section introduit des méthodes sur un objet Connection
pour gérer les schemas et les propriétés des nodes et des edges dans un graphset.
Chaque exemple se concentre uniquement sur l'utilisation de la méthode. Pour un exemple de code complet, veuillez vous référer à l'exemple complet.
Schema
showSchema()
Récupère tous les nodes et les schemas des edges du graphset actuel.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Schema[]
: La liste de tous les schemas dans le graphset actuel.
// Récupère tous les schemas dans le graphset 'UltipaTeam' et affiche leurs noms et types
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.showSchema(requestConfig);
const dataList = resp.data?.map((item) => ({
Name: item.name,
dbType: Number(item.totalNodes) >= 0 ? "DBNODE" : "DBEDGE",
}));
console.log(dataList);
[
{ Name: 'default', dbType: 'DBNODE' },
{ Name: 'member', dbType: 'DBNODE' },
{ Name: 'organization', dbType: 'DBNODE' },
{ Name: 'default', dbType: 'DBEDGE' },
{ Name: 'reportsTo', dbType: 'DBEDGE' },
{ Name: 'relatesTo', dbType: 'DBEDGE' }
]
getSchema()
Récupère un schema de node ou d'edge du graphset actuel.
Paramètres :
string
: Nom du schema.ULTIPA.DBType
: Type du schema (node ou edge).RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Schema
: Le schema récupéré.
// Récupère le schema de node 'member' et le schema d'edge 'connectsTo' dans le graphset 'UltipaTeam', et affiche toutes leurs informations
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let nodeInfo = await conn.getSchema(
"member",
ULTIPA.DBType.DBNODE,
requestConfig
);
console.log("NodeSchema: ", nodeInfo.data);
let edgeInfo = await conn.getSchema(
"connectsTo",
ULTIPA.DBType.DBEDGE,
requestConfig
);
console.log("EdgeSchema: ", edgeInfo.data);
{
NodeSchema: {
name: 'member',
description: '',
properties: [
{
name: 'name',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
},
{
name: 'title',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
},
{
name: 'profile',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
},
{
name: 'age',
type: 'int32',
description: '',
lte: 'false',
extra: '{}'
}
],
totalNodes: '7'
}
EdgeSchema: {}
showNodeSchema()
Récupère tous les schemas de nodes du graphset actuel.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Schema[]
: La liste de tous les schemas de nodes dans le graphset actuel.
// Récupère tous les schemas de nodes dans le graphset 'UltipaTeam' et affiche leurs noms
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let dataOri = await conn.showNodeSchema(requestConfig);
const schemaInfo = dataOri.data?.map((item) => item.name);
console.log("SchemaName: ", schemaInfo);
SchemaName: [ 'default', 'member', 'organization' ]
showEdgeSchema()
Récupère tous les schemas d'edges dans le graphset actuel.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Schema[]
: La liste de tous les schemas de nodes dans le graphset actuel.
// Récupère tous les schemas d'edges dans le graphset 'UltipaTeam' et affiche leurs noms
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let dataOri = await conn.showNodeSchema(requestConfig);
const schemaInfo = dataOri.data?.map((item) => item.name);
console.log("SchemaName: ", schemaInfo);
SchemaName: [ 'default', 'reportsTo', 'relatesTo']
getNodeSchema()
Récupère un schema de node du graphset actuel.
Paramètres :
string
: Nom du schema.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Schema
: Le schema de node récupéré.
// Récupère le schema de node 'member' dans le graphset 'UltipaTeam' et affiche ses propriétés
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.getNodeSchema("member", requestConfig);
console.log("Property: ", resp.data?.properties);
Property: [
{
name: 'name',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
},
{
name: 'title',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
},
{
name: 'profile',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
},
{
name: 'age',
type: 'int32',
description: '',
lte: 'false',
extra: '{}'
}
]
getEdgeSchema()
Récupère un schema d'edge du graphset actuel.
Paramètres :
string
: Nom du schema.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Schema
: Le schema d'edge récupéré.
// Récupère le schema d'edge 'relatesTo' dans le graphset 'UltipaTeam' et affiche ses propriétés
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.getEdgeSchema("relatesTo", requestConfig);
console.log("Property: ", resp.data?.properties);
Property: [
{
name: 'type',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
}
]
createSchema()
Crée un nouveau schema dans le graphset actuel.
Paramètres :
Schema
: Le schema à créer ; les champsname
etdbType
doivent être définis,desc
(pour description) etproperties
sont optionnels.boolean
: Indique s'il faut créer des propriétés, la valeur par défaut estfalse
.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Response
: Résultat de la requête.
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
// Crée le schema de node 'utility' (avec propriétés) dans le graphset 'UltipaTeam' et affiche toutes ses informations
const property1: ULTIPA.Header = {
name: "name",
type: ULTIPA.PropertyType.string,
};
const property2: ULTIPA.Header = {
name: "purchaseDate",
type: ULTIPA.PropertyType.datetime,
};
let nodePro = await conn.createSchema(
{
dbType: ULTIPA.DBType.DBNODE,
name: "utility",
properties: [property1, property2],
desc: "Office utilities",
},
true,
requestConfig
);
console.log("Node Schema Creation: ", nodePro.status.code_desc);
console.log((await conn.getNodeSchema("utility", requestConfig)).data);
// Crée le schema d'edge 'managedBy' (sans propriétés) dans le graphset 'UltipaTeam' et affiche toutes ses informations
let edgePro = await conn.createSchema(
{
dbType: ULTIPA.DBType.DBEDGE,
name: "managedBy",
},
false,
requestConfig
);
console.log("Edge Schema Creation: ", edgePro.status.code_desc);
console.log((await conn.getEdgeSchema("managedBy", requestConfig)).data);
Node Schema Creation: SUCCESS
{
name: 'utility',
description: 'Office utilities',
properties: [
{
name: 'name',
type: 'string',
description: '',
lte: 'false',
extra: '{}'
},
{
name: 'purchaseDate',
type: 'datetime',
description: '',
lte: 'false',
extra: '{}'
}
],
totalNodes: '0'
}
Edge Schema Creation: SUCCESS
{ name: 'managedBy', description: '', properties: [], totalEdges: '0' }
createSchemaIfNotExist()
Crée un nouveau schema dans le graphset actuel, gérant les cas où le nom du schema donné existe déjà en ignorant l'erreur.
Paramètres :
Schema
: Le schema à créer ; les champsname
etdbType
doivent être définis,description
etproperties
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Boolean
: Indique si la création a eu lieu.
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
// Crée un schema dans le graphset 'UltipaTeam' et affiche si la création répétée est ignorée
let creation1 = await conn.createSchemaIfNotExist(
{
dbType: ULTIPA.DBType.DBNODE,
name: "utility",
desc: "Office utilities",
},
requestConfig
);
console.log("Ignore repeated creation: ", creation1.data);
// Crée à nouveau le même schema et affiche si la création répétée est ignorée
let creation2 = await conn.createSchemaIfNotExist(
{
dbType: ULTIPA.DBType.DBNODE,
name: "utility",
desc: "Office utilities",
},
requestConfig
);
console.log("Ignore repeated creation: ", creation2.data);
Ignore repeated creation: false
Ignore repeated creation: true
alterSchema()
Modifie le nom et la description d'un schema existant dans le graphset actuel par son nom.
Paramètres :
Schema
: Le schema existant à modifier ; les champsname
etdbType
doivent être définis.Schema
: La nouvelle configuration pour le schema existant ; au moins l'un des champsname
etdesc
(pour description) doit être défini.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Response
: Résultat de la requête.
// Renomme le schema de node 'utility' en 'securityUtility' et enlève sa description dans le graphset 'UltipaTeam'
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.alterSchema(
{
dbType: ULTIPA.DBType.DBNODE,
name: "utility",
desc: "Office utilities",
},
{
dbType: ULTIPA.DBType.DBNODE,
name: "securityUtility",
desc: "",
},
requestConfig
);
console.log(resp.status.code_desc);
SUCCESS
dropSchema()
Supprime un schema du graphset actuel par son nom.
Paramètres :
Schema
: Le schema existant à supprimer ; les champsname
etdbType
doivent être définis.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Response
: Résultat de la requête.
// Supprime le schema de node 'utility' dans le graphset 'UltipaTeam'
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.dropSchema(
{
dbType: ULTIPA.DBType.DBNODE,
name: "utility",
},
requestConfig
);
console.log(resp);
{
status: { code: 0, message: '', code_desc: 'SUCCESS' },
statistics: { totalCost: 1, engineCost: 0, nodeAffected: 0, edgeAffected: 0 },
req: undefined
}
Property
showProperty()
Récupère les propriétés personnalisées des nodes ou des edges du graphset actuel.
Paramètres :
DBType
: Type de la propriété (node ou edge).string
: Nom du schema.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Property[]
: La liste de toutes les propriétés récupérées dans le graphset actuel.
// Récupère toutes les propriétés des nodes dans le graphset 'UltipaTeam' et affiche leurs noms et les schemas associés
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
const nameList = (await conn.showNodeSchema(requestConfig)).data?.map(
(item) => item.name
)!;
for (let i = 0; i < nameList.length; i++) {
let resp = await conn.showProperty(
ULTIPA.DBType.DBNODE,
nameList[i],
requestConfig
);
console.log(
"Schema",
nameList[i],
"contains properties",
resp.data?.map((item) => item.name)
);
}
Schema default contains properties []
Schema member contains properties [ 'name', 'title', 'profile' ]
Schema organization contains properties [ 'name', 'logo' ]
showNodeProperty()
Récupère les propriétés personnalisées des nodes du graphset actuel.
Paramètres :
string
: Nom du schema.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Property[]
: La liste de toutes les propriétés récupérées dans le graphset actuel.
// Récupère toutes les propriétés personnalisées du schema de node 'member' dans le graphset 'UltipaTeam' et affiche le nombre
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let NodePro = await conn.showNodeProperty("member", requestConfig);
console.log(NodePro.data?.length);
3
showEdgeProperty()
Récupère les propriétés personnalisées des edges du graphset actuel.
Paramètres :
string
: Nom du schema.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Property[]
: La liste de toutes les propriétés récupérées dans le graphset actuel.
// Récupère toutes les propriétés personnalisées du schema d'edge 'relatesTo' dans le graphset 'UltipaTeam' et affiche leurs noms
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let edgePro = await conn.showEdgeProperty("relatesTo", requestConfig);
console.log(edgePro.data?.map((item) => item.name));
[ 'type' ]
getProperty()
Récupère une propriété personnalisée des nodes ou des edges du graphset actuel.
Paramètres :
ULTIPA.DBType
: Type de la propriété (node ou edge).string
: Nom du schema.string
: Nom de la propriété.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Property
: La propriété récupérée.
// Récupère la propriété de node @member.title dans le graphset 'UltipaTeam' et affiche toutes ses informations
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.getProperty(
ULTIPA.DBType.DBNODE,
"member",
"title",
requestConfig
);
console.log(resp.data);
{
name: 'title',
type: 'string',
lte: 'false',
read: '1',
write: '1',
schema: 'member',
description: '',
extra: '{}',
encrypt: ''
}
getNodeProperty()
Récupère une propriété personnalisée des nodes du graphset actuel.
Paramètres :
string
: Nom du schema.string
: Nom de la propriété.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Property
: La propriété récupérée.
// Récupère la propriété de node @member.title dans le graphset 'UltipaTeam' et affiche toutes ses informations
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.getNodeProperty(
"member",
"title",
requestConfig
);
console.log(resp.data);
{
name: 'title',
type: 'string',
lte: 'false',
read: '1',
write: '1',
schema: 'member',
description: '',
extra: '{}',
encrypt: ''
}
getEdgeProperty()
Récupère une propriété personnalisée des edges du graphset actuel.
Paramètres :
string
: Nom du schema.string
: Nom de la propriété.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Property
: La propriété récupérée.
// Récupère la propriété d'edge @relatesTo.type dans le graphset 'UltipaTeam' et affiche toutes ses informations
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp = await conn.getEdgeProperty("relatesTo", "type", requestConfig);
console.log(resp.data);
{
name: 'type',
type: 'string',
lte: 'false',
read: '1',
write: '1',
schema: 'relatesTo',
description: '',
extra: '{}',
encrypt: ''
}
createProperty()
Crée une nouvelle propriété pour un schema de node ou d'edge dans le graphset actuel.
Paramètres :
ULTIPA.DBType
: Type de la propriété (node ou edge).string
: Nom du schema, écrire*
pour spécifier tous les schemas.Property
: La propriété à créer ; les champsname
ettype
doivent être définis,description
est optionnel.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Response
: Résultat de la requête.
// Crée deux propriétés pour le schema de node 'member' dans le graphset 'UltipaTeam' et affiche les codes d'erreur
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
let resp1 = await conn.createProperty(
ULTIPA.DBType.DBNODE,
"member",
{ name: "startDate", schema: "member", type: ULTIPA.PropertyType.datetime },
requestConfig
);
console.log(resp1.status.code_desc);
let resp2 = await conn.createProperty(
ULTIPA.DBType.DBNODE,
"member",
{ name: "age", schema: "member", type: ULTIPA.PropertyType.int32 },
requestConfig
);
console.log(resp2.status.code_desc);
SUCCESS
SUCCESS
createPropertyIfNotExist()
Crée une nouvelle propriété pour un schema de node ou d'edge dans le graphset actuel, gérant les cas où le nom de la propriété donné existe déjà en ignorant l'erreur.
Paramètres :
ULTIPA.DBType
: Type de la propriété (node ou edge).string
: Nom du schema, écrire*
pour spécifier tous les schemas.Property
: La propriété à créer ; les champsname
ettype
doivent être définis,description
est optionnel.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Boolean
: Indique si la création a eu lieu.
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
// Crée une propriété pour le schema de node 'member' dans le graphset 'UltipaTeam' et affiche si la création répétée est ignorée
let resp1 = await conn.createPropertyIfNotExist(
ULTIPA.DBType.DBNODE,
"member",
{ name: "startDate", schema: "member", type: ULTIPA.PropertyType.datetime },
requestConfig
);
console.log("Ignore repeated creation: ", resp1.data);
// Crée à nouveau la même propriété dans le graphset 'UltipaTeam' et affiche si la création répétée est ignorée
let resp2 = await conn.createPropertyIfNotExist(
ULTIPA.DBType.DBNODE,
"member",
{ name: "startDate", schema: "member", type: ULTIPA.PropertyType.datetime },
requestConfig
);
console.log("Ignore repeated creation: ", resp2.data);
Ignore repeated creation: false
Ignore repeated creation: true
alterProperty()
Modifie le nom et la description d'une propriété personnalisée existante dans le graphset actuel par son nom.
Paramètres :
ULTIPA.DBType
: Type de la propriété (node ou edge).Property
: La propriété existante à modifier ; les champsname
etschema
(écrire*
pour spécifier tous les schemas) doivent être définis.Property
: La nouvelle configuration pour la propriété existante ; au moins l'un des champsname
etdescription
doit être défini.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Response
: Résultat de la requête.
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
// Renomme les propriétés 'name' associées à tous les schemas de node en `Name` dans le graphset 'UltipaTeam'
let resp = await conn.alterProperty(
ULTIPA.DBType.DBNODE,
{ name: "name", schema: "*" },
{ name: "Name", schema: "*" },
requestConfig
);
console.log(resp.status.code_desc);
SUCCESS
dropProperty()
Supprime une propriété personnalisée du graphset actuel par son nom et le schema associé.
Paramètres :
ULTIPA.DBType
: Type de la propriété (node ou edge).string
: Nom du schema.string
: Nom de la propriété.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
Response
: Résultat de la requête.
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
// Supprime les propriétés 'startDate' associées à tous les schemas de node dans le graphset 'UltipaTeam' et affiche le code d'erreur
let resp1 = await conn.dropProperty(
ULTIPA.DBType.DBNODE,
"*",
"startDate",
requestConfig
);
console.log(resp1.status.code_desc);
// Supprime la propriété de node @member.name dans le graphset 'UltipaTeam' et affiche le code d'erreur
let resp2 = await conn.dropProperty(
ULTIPA.DBType.DBNODE,
"member",
"name",
requestConfig
);
console.log(resp1.status.code_desc);
SUCCESS
SUCCESS
Full Example
import { ConnectionPool, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
import { GraphExra } from "@ultipa-graph/ultipa-node-sdk/dist/connection/extra/graph.extra";
import { getEdgesPrintInfo } from "@ultipa-graph/ultipa-node-sdk/dist/printers/edge";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
import { ListFormat } from "typescript";
let sdkUsage = async () => {
// Configuration de la connexion
//Exemple URI : hosts="mqj4zouys.us-east-1.cloud.ultipa.com:60010"
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061",
];
let username = "***";
let password = "***";
let connPool = new ConnectionPool(hosts, username, password);
// Établit la connexion à la base de données
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
// Configuration des requêtes
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "UltipaTeam",
useMaster: true,
};
// Crée le schema de node 'utility' (avec propriétés) dans le graphset 'UltipaTeam' et affiche le code d'erreur
const property1: ULTIPA.Header = {
name: "name",
type: ULTIPA.PropertyType.string,
};
const property2: ULTIPA.Header = {
name: "purchaseDate",
type: ULTIPA.PropertyType.datetime,
};
let nodePro = await conn.createSchema(
{
dbType: ULTIPA.DBType.DBNODE,
name: "utility",
properties: [property1, property2],
desc: "Office utilities",
},
true,
requestConfig
);
console.log("Node Schema Creation: ", nodePro.status.code_desc);
console.log((await conn.getNodeSchema("utility", requestConfig)).data);
};
sdkUsage().then(console.log).catch(console.log);