Skip to content

Latest commit

 

History

History
91 lines (73 loc) · 1.98 KB

migration.md

File metadata and controls

91 lines (73 loc) · 1.98 KB

Migration

back

Table of Contents

Introduction

Use ducere command
ducere make migration

ducere make migration createUsersTable
>> migrations/migration{datetime}createUsersTable.nim

and updated /migrations/migrate.nim automatically.

To run migration, run migrate.nim

nim c -r migrations/migrate

You can also use ducere command.

ducere migrate

Example

mirations/migration20210410131239user.nim

import json, strformat
import allographer/schema_builder
import allographer/query_builder

proc migration20210410131239user*() =
  schema(
    table("auth", [
      Column().increments("id"),
      Column().string("auth")
    ], reset=true),
    table("users", [
      Column().increments("id"),
      Column().string("name"),
      Column().string("email"),
      Column().foreign("auth_id").reference("id").on("auth").onDelete(SET_NULL),
      Column().timestamps()
    ], reset=true)
  )

  rdb().table("auth").insert([
    %*{"id": 1, "auth": "admin"},
    %*{"id": 2, "auth": "user"},
  ])

  var users: seq[JsonNode]
  for i in 1..100:
    users.add(%*{
      "id": i,
      "name": &"user{i}",
      "email": &"user{i}@nim.com",
      "auth_id": if i mod 2 == 0: 1 else: 2
    })
  rdb().table("users").insert(users)

  echo rdb().table("users").get()

migrations/migrate.nim

import migration20210410131239user

proc main() =
  discard
  migration20210410131239user()

main()

More details of Schema Builder and Query Builder is in allographer documents.