Как создать скрипт Index and Constraint для магазина Neo4j, используя Liquigraph в Java? - PullRequest
4 голосов
/ 22 мая 2019

Я пытаюсь сгенерировать Index и Constraint для моих весенних сущностей. Я не использую какие-либо возможности Spring-Data, чтобы сделать это, например indexes.auto=assert.

Как мне сгенерировать сценарии при следующих условиях

  1. Мне нужно генерировать скрипты в режиме offline. т.е. я не могу предоставить Neo4j сервер, пользователь, пароль и т. д.

  2. Мне нужно использовать Java API для достижения этой цели. Я могу создать журнал изменений ликвидатора, но не могу найти способ сгенерировать сценарий.

Я использовал зависимость maven

    <!-- https://mvnrepository.com/artifact/org.liquigraph/liquigraph-core -->
    <dependency>
        <groupId>org.liquigraph</groupId>
        <artifactId>liquigraph-core</artifactId>
        <version>3.1.0</version>
    </dependency>
  1. Мой вывод должен быть файлом, содержащим подобные сценарии

    CREATE CONSTRAINT ON ( action:Action ) ASSERT action.id IS UNIQUE

Как я могу это сделать?

1 Ответ

1 голос
/ 22 мая 2019

Если вы будете запускать свой набор изменений из Java, вам не нужно вводить в него какие-либо учетные данные, только запросы CYPHER.

Создайте changelog.xml и вставьте ресурсы.

<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://www.liquigraph.org/schema/1.0/liquigraph.xsd">
  <changeset id="action-contraint" author="JITHIN">
    <query>CREATE CONSTRAINT ON (action:Action) ASSERT action.id IS UNIQUE</query>
  </changeset>
</changelog>

Затем вы можете запустить миграцию из Java и всех учетных данных, которые вы можете сохранитьв вашем приложении.

Configuration configuration = new ConfigurationBuilder()
        .withMasterChangelogLocation("changelog.xml")
        .withUri("jdbc:neo4j:http://localhost:7474")
        .withUsername(user)
        .withPassword(pass)
        .withRunMode()
        .build();

Liquigraph liquigraph = new Liquigraph();
liquigraph.runMigrations(configuration);

После выполнения ваше ограничение должно быть добавлено, по крайней мере, у меня работает

╒══════════════════════════════════════════════════════════════════════╕
│"description"                                                         │
╞══════════════════════════════════════════════════════════════════════╡
│"CONSTRAINT ON ( __liquigraphlock:__LiquigraphLock ) ASSERT __liquigra│
│phlock.name IS UNIQUE"                                                │
├──────────────────────────────────────────────────────────────────────┤
│"CONSTRAINT ON ( action:Action ) ASSERT action.id IS UNIQUE"          │
└──────────────────────────────────────────────────────────────────────┘
...