24个不稳定版本 (5个破坏性更新)

0.6.0 2022年6月17日
0.5.1 2022年1月3日
0.5.0 2021年12月13日
0.4.0 2021年10月25日
0.2.2 2020年12月14日

#1340 in 数据库接口

Download history 1/week @ 2024-03-09 52/week @ 2024-03-30

每月 99 次下载

MIT 许可证

385KB
5.5K SLoC

Logo

Aragog CLI

pipeline status MIT licensed Crates.io dependency status

Discord Gitter

用于aragog (aragog) (crates.io)的迁移和模式生成工具。

注意:当前不支持事务操作,失败的迁移不会自动回滚,您可能需要手动处理一些错误。

安装

使用cargo运行:cargo install aragog_cli

选项

  • --db-host <DB_HOST> 设置AragoDB主机(默认使用环境变量DB_HOST
  • --db-name <DB_NAME> 设置AragoDB数据库名称(默认使用环境变量DB_NAME
  • --db-password <DB_PASSWORD> 设置AragoDB数据库用户密码(默认使用环境变量DB_PASSWORD
  • --db-user <DB_USER> 设置AragoDB数据库用户(默认使用环境变量DB_USER
  • --folder <PATH> 设置迁移和模式路径(默认使用环境变量SCHEMA_PATH
  • --aragog-collection <COLLECTION> 设置用于同步数据库和模式版本的配置AragoDB集合名称(默认使用"AragogConfiguration")

详细模式

添加-v选项以生成调试日志,并添加-vv以生成详细日志

命令

创建迁移

命令:aragog create_migration $MIGRATION_NAME

$SCHEMA_PATH/migrations/ 创建一个新的迁移文件。如果 db 文件夹不存在,它将被自动创建。

启动迁移

命令: aragog migrate

将在 $SCHEMA_PATH/migrations/ 中启动每个迁移,并根据其当前版本更新模式。如果没有模式,它将被生成。

回滚迁移

命令: aragog rollback

将在 $SCHEMA_PATH/migrations/ 中回滚 1 个迁移,并根据其当前版本更新模式。

命令: aragog rollback $COUNT

将在 $SCHEMA_PATH/migrations/ 中回滚 $COUNT 个迁移,并根据其当前版本更新模式。

截断数据库

命令: aragog truncate_database

将删除数据库中的每个图和集合。

描述数据库

命令: argog describe

将显示有关数据库的信息,同步版本以及显示每个集合的表格。

发现数据库

命令: aragog discover

将为数据库中未在模式中引用的每个集合、图和索引生成并应用迁移文件。

此命令有助于强制数据库状态与模式之间的同步,或从现有数据库初始化您的模式并迁移。

完成脚本(受 rustup 文档的启发)

命令: aragog completions

为 Bash、Fish、Zsh 或 PowerShell 启用 Tab 完成。脚本输出到 stdout,允许用户将输出重定向到他们选择的文件。文件放置的位置取决于所使用的 shell 和操作系统。您的特定配置也可能决定这些脚本需要放置的位置。

以下是 Unix 和类似操作系统(如 GNU/Linux)下支持的三种 shell 的常见设置。

BASH

完成文件通常存储在 /etc/bash_completion.d/ 以供系统级命令使用,但对于用户特定命令可以存储在 ~/.local/share/bash-completion/completions

运行命令

$ mkdir -p ~/.local/share/bash-completion/completions $ aragog completions bash >> ~/.local/share/bash-completion/completions/aragog

这安装了完成脚本。您可能需要注销并重新登录 shell 会话才能使更改生效。

BASH(macOS/Homebrew)

Homebrew 将 bash 完成文件存储在 Homebrew 目录中。使用已安装的 bash-completion brew 公式,运行以下命令

$ mkdir -p $(brew --prefix)/etc/bash_completion.d $ aragog completions bash > $(brew --prefix)/etc/bash_completion.d/aragog.bash-completion

FISH

Fish 完成文件通常存储在 $HOME/.config/fish/completions

运行命令

创建必要的目录并生成 aragog 完成脚本:

这安装了完成脚本。您可能需要注销并重新登录 shell 会话才能使更改生效。

使用命令:

$ mkdir -p ~/.config/fish/completions

$ aragog completions fish > ~/.config/fish/completions/aragog.fish

对于 ZSH:

ZSH 完成脚本通常存储在你的 $fpath 变量中指定的任何目录。要使用这些完成脚本,你必须将这些生成的脚本添加到这些目录之一,或者添加你自己的到列表中。

如果不确定要使用哪个目录,添加自定义目录通常是最佳选择。首先创建目录;在这个例子中,我们将在 $HOME 目录中创建一个隐藏目录

使用命令:

$ mkdir ~/.zfunc

然后,在 .zshrc 中添加以下行,在 compinit 之前:

fpath+=~/.zfunc

现在,可以使用以下命令安装完成脚本:

$ aragog completions zsh > ~/.zfunc/_aragog

之后,你必须注销并重新登录,或者简单地运行:

$ exec zsh

以便新的完成脚本生效。

自定义位置

或者,你可以将这些文件保存到你的选择的位置,例如 $HOME 中的自定义目录。这样做将需要你在登录脚本中添加适当的指令,如 source。有关如何添加此类指令的说明,请参阅你的外壳文档。

POWERSHELL:

PowerShell 完成脚本需要 PowerShell v5.0+(包含在 Windows 10 中,但也可以为 Windows 7 或 8.1 分别下载)。

首先,检查是否已经设置了配置文件:

PS C:> Test-Path $profile

如果上述命令返回 False,则运行以下命令:

PS C:> New-Item -path $profile -type file -force

现在,打开 $profile 提供的文件(如果你使用了 New-Item 命令,它将是 ${env:USERPROFILE}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

up:     # Mandatory
  - up_command:
      options: Option
down:   # optional
  - down_command:
      options: Option

接下来,我们将完成文件保存到我们的配置文件中,或者保存到单独的文件并在配置文件中引用它。要将完成文件保存到配置文件中,请使用以下命令:

命令

PS C:> aragog completions powershell >> ${env:USERPROFILE}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

迁移文件

- create_collection:          # Creates a colllection with
    name: CollectionName      # Mandatory name
    wait_for_sync: true       # Optional waitForSync attribute
- delete_collection:          # Deletes a collection with
    name: CollectionName      # Mandatory name
- create_edge_collection:     # Creates a edge collection
    name: EdgeCollectionName  # Mandatory name
    wait_for_sync: false      # Optional waitForSync attribute
- delete_edge_collection:     # Deletes a edge collection
    name: EdgeCollectionName  # Mandatory name

每个迁移文件看起来像这样

- aql: FOR i in..   # Runs a AQL command

up 部分在 migrate 时启动,并在 rollbackdown。对于完美的迁移文件,down 应该完全反转 up 所做的所有操作。

有一个 updown 部分的所有可用命令列表

- create_graph:                         # Creates a Graph
    name: GraphName                     # Mandatory name
    edge_definitions:                   # Mandatory edge definition list
      - collection: MyEdgeCollection    # Edge Collection Name
        from: ["MyCollection"]          # List of collections for the `from` part
        to: ["MyCollection2"]           # List of collections for the `to` part
    orphan_collections:                 # Optional list of orphan collections
      - MyCollection3
    is_smart: false                     # Optional attribute (enterprise edition only)
    is_disjoint: false                  # Optional attribute (enterprise edition only)
    options:                            # Optional attribute
      smart_graph_attribute: region     # Optional attribute
      number_of_shards: 2               # Optional attribute
      replication_factor: 9             # Optional attribute
      write_concern: 8                  # Optional attribute
- delete_graph:                         # Deletes a graph   
    name: Graph                         # Mandatory name

收集

AQL

- create_graph:                      
    name: GraphName                  
    edge_definitions:                
      - collection: MyEdgeCollection 
        from: ["MyCollection"]       
        to: ["MyCollection2"]        
- delete_graph:                      
    name: Graph                      

- create_index:               # Creates an Index
    name: MyIndex             # Mandatory name
    fields: ["name"]          # Mandatory index fields list
    collection: MyCollection  # Mandatory collection name (doesn't work on edge collections)
    settings:                 # Mandatory settings
      type: persistent        # Mandatory index type (hash, persistent, ttl, geospatial, fulltext, skiplist)
      unique: true
      sparse: false
      deduplicate: false
- delete_index:               # Deletes an Index
    name: MyIndex             # Mandatory name
    collection: MyCollection  # Mandatory collection

完整参数

有关图创建选项的更多信息,请参阅 ArangoDB 文档

type: persistent
unique: true
sparse: false
deduplicate: false

你可以用最少的参数使用它

type: hash
unique: true
sparse: false
deduplicate: false

索引

type: skiplist
unique: true
sparse: false
deduplicate: false

根据索引类型,在 settings 中有各种参数

type: ttl
expireAfter: 3600

持久索引

哈希索引

type: geo
geoJson: false

跳表索引

TTL 索引

type: ttl
minLength: 3600

expireAfter 字段是驼峰命名法(camelCase),而不是蛇形命名法(snake_case),这将在未来的版本中修复

地理空间索引

  • geoJson 字段是驼峰命名法(camelCase),而不是蛇形命名法(snake_case),这将在未来的版本中修复
    • 全文索引
    • minLength 字段是驼峰命名法(camelCase),而不是蛇形命名法(snake_case),这将在未来的版本中修复
  • 待办事项列表
    • 迁移命令

edit_collection

~11-29MB
~424K SLoC