8. postgres=> dt users;
List of relations
Schema ¦ Name ¦ Type ¦ Owner
--------+-------+-------+--------
public ¦ users ¦ table ¦ myname
(1 row)
postgres=> select * from schema_migrations;
version
----------------
20131104023129
(1 row)
14. $ ./migr8.rb new -m "create 'users' table"
# or: ./migr8.rb new --table=users
$ ls migr8/migrations
scjs8350.yaml
15. # -*- coding: utf-8 -*-
version: scjs8350
desc: create 'users' table
author: alice
vars:
up: ¦
create table users (
id serial primary key
name varchar(255) not null unique,
);
down: ¦
drop table users;
16. # -*- coding: utf-8 -*-
version: scjs8350
desc: create 'users' table
author: alice
vars:
- table: users
up: ¦
create table ${table} (
id serial primary key
name varchar(255) not null unique,
);
down: ¦
drop table ${table};
17. ### バージョンを上げる
$ ./migr8.rb up
### バージョンを戻す
$ ./migr8.rb down
### 再実行(戻して、もう一度上げる)
$ ./migr8.rb redo
### 現在のバージョンを調べる
$ ./migr8.rb status # 省略可
...(snip)...
18. postgres=> dt users;
List of relations
Schema ¦ Name ¦ Type ¦ Owner
--------+-------+-------+-------
public ¦ users ¦ table ¦ user1
(1 row)
postgres=> select id, version from _migr8_history;
id | version
---------------
1 | scjs8350
(1 row)
19. ### インデックスを追加
$ ./migr8.rb new --index=users.name
$ ./migr8.rb up
### テーブルを追加
$ ./migr8.rb new --table=groups
$ ./migr8.rb up
### カラムを追加
$ ./migr8.rb new --column=users.group_id
24. # -*- coding: utf-8 -*-
version: ewwg6691
desc: add index to 'users.name'
author: john
vars:
- table: users
- column: name
- index: ${users}_${column}_idx
up: ¦
create index ${index} on ${table}(${column});
down: ¦
drop index ${index};
26. create table _migr8_history (
id serial primary key
, version varchar(40) not null unique
, author varchar(40) not null
, description varchar(255) not null
, up_script text not null
, down_script text not null
, applied_at timestamp not null default timeofday()
);
27.
28. begin;
create table ...;
insert into _migr8_history ...;
create index ...;
insert into _migr8_history ...;
alter table ...;
insert into _migr8_history ...;
commit;
59. $ ./migr8.rb show -h ## ヘルプ
$ ./migr8.rb show version ## 内容を表示 (変数展開済)
$ ./migr8.rb show ## 直近のバージョンが対象
$ ./migr8.rb show -x version ## DBテーブルから読み込む