Migration and schema generation tool for aragog (Version > 0.7).
Note: Currently, transactional operations are not supported, a failing migrations will not automatically rollback and you may need to handle some errors manually
run with cargo: cargo install aragog_cli
--db-host <DB_HOST> Sets the ArangoDB host (by default env var DB_HOST is used)--db-name <DB_NAME> Sets the ArangoDB database name (by default env var DB_NAME is used)--db-password <DB_PASSWORD> Sets the ArangoDB database user password (by default env var DB_PASSWORD is used)--db-user <DB_USER> Sets the ArangoDB database user (by default env var DB_USER is used)--folder <PATH> Sets the path for the migrations and schema (by default env var SCHEMA_PATH is used)--aragog-collection <COLLECTION> Sets the name of the config ArangoDB collection that will be used to synchronize database and schema version (by default "AragogConfiguration" is used)Add -v option for debug log and -vv for verbose log
Command: aragog create_migration $MIGRATION_NAME 
Creates a new migration file in $SCHEMA_PATH/migrations/. If the db folder is missing it will be created automatically.
Command: aragog migrate
Will launch every migration in $SCHEMA_PATH/migrations/ and update the schema according to its current version.
If there is no schema it will be generated.
Command: aragog rollback
Will rollback 1 migration in $SCHEMA_PATH/migrations/ and update the schema according to its current version.
Command: aragog rollback $COUNT
Will rollback $COUNT migrations in $SCHEMA_PATH/migrations/ and update the schema according to its current version.
Command: aragog truncate_database
Will drop every graph and collection in the database.
Command: argog describe
Will render information about the database, schema synced version and render a table describing every collection.
Every migration file looks like this:
yaml
up:     # Mandatory
  - up_command:
      options: Option
down:   # optional
  - down_command:
      options: Option
The up section launches on migrate and down on rollback.
For perfect migration files, down should reverse exactly everything up does.
There is a list of all available commands for the up and down section:
yaml
- 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
yaml
- aql: FOR i in..   # Runs a AQL command
Full parameters:
yaml
- 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
For more information on the graph creation options see the ArangoDB Documentation
You can use it with minimal parameters:
yaml
- create_graph:                      
    name: GraphName                  
    edge_definitions:                
      - collection: MyEdgeCollection 
        from: ["MyCollection"]       
        to: ["MyCollection2"]        
- delete_graph:                      
    name: Graph                      
yaml
- 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
You have various parameters on the settingsaccording to index type:
yaml
type: persistent
unique: true
sparse: false
deduplicate: false
yaml
type: hash
unique: true
sparse: false
deduplicate: false
yaml
type: skiplist
unique: true
sparse: false
deduplicate: false
yaml
type: ttl
expireAfter: 3600
The expireAfter field is in camelCase instead of snake_case, this will be fixed in future releases
yaml
type: geo
geoJson: false
The geoJson field is in camelCase instead of snake_case, this will be fixed in future releases
yaml
type: ttl
minLength: 3600
The minLength field is in camelCase instead of snake_case, this will be fixed in future releases
rename_collection