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 数据库接口
每月 99 次下载
385KB
5.5K SLoC
Aragog CLI
用于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
时启动,并在 rollback
时 down
。对于完美的迁移文件,down
应该完全反转 up
所做的所有操作。
有一个 up
和 down
部分的所有可用命令列表
- 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