1Mojo::Pg::Migrations(3)User Contributed Perl DocumentatioMnojo::Pg::Migrations(3)
2
3
4
6 Mojo::Pg::Migrations - Migrations
7
9 use Mojo::Pg::Migrations;
10
11 my $migrations = Mojo::Pg::Migrations->new(pg => $pg);
12 $migrations->from_file('/home/sri/migrations.sql')->migrate;
13
15 Mojo::Pg::Migrations is used by Mojo::Pg to allow database schemas to
16 evolve easily over time. A migration file is just a collection of sql
17 blocks, with one or more statements, separated by comments of the form
18 "-- VERSION UP/DOWN".
19
20 -- 1 up
21 CREATE TABLE messages (message TEXT);
22 INSERT INTO messages VALUES ('I ♥ Mojolicious!');
23 -- 1 down
24 DROP TABLE messages;
25
26 -- 2 up (...you can comment freely here...)
27 CREATE TABLE stuff (whatever INT);
28 -- 2 down
29 DROP TABLE stuff;
30
31 The idea is to let you migrate from any version, to any version, up and
32 down. Migrations are very safe, because they are performed in
33 transactions and only one can be performed at a time. If a single
34 statement fails, the whole migration will fail and get rolled back.
35 Every set of migrations has a "name", which is stored together with the
36 currently active version in an automatically created table named
37 "mojo_migrations".
38
40 Mojo::Pg::Migrations implements the following attributes.
41
42 name
43 my $name = $migrations->name;
44 $migrations = $migrations->name('foo');
45
46 Name for this set of migrations, defaults to "migrations".
47
48 pg
49 my $pg = $migrations->pg;
50 $migrations = $migrations->pg(Mojo::Pg->new);
51
52 Mojo::Pg object these migrations belong to. Note that this attribute is
53 weakened.
54
56 Mojo::Pg::Migrations inherits all methods from Mojo::Base and
57 implements the following new ones.
58
59 active
60 my $version = $migrations->active;
61
62 Currently active version.
63
64 from_data
65 $migrations = $migrations->from_data;
66 $migrations = $migrations->from_data('main');
67 $migrations = $migrations->from_data('main', 'file_name');
68
69 Extract migrations from a file in the DATA section of a class with
70 "data_section" in Mojo::Loader, defaults to using the caller class and
71 "name".
72
73 __DATA__
74 @@ migrations
75 -- 1 up
76 CREATE TABLE messages (message TEXT);
77 INSERT INTO messages VALUES ('I ♥ Mojolicious!');
78 -- 1 down
79 DROP TABLE messages;
80
81 from_dir
82 $migrations = $migrations->from_dir('/home/sri/migrations');
83
84 Extract migrations from a directory tree where each versioned migration
85 is in a directory, named for the version, and each migration has one or
86 both of the files named "up.sql" or "down.sql".
87
88 migrations/1/up.sql
89 migrations/1/down.sql
90 migrations/2/up.sql
91 migrations/3/up.sql
92 migrations/3/down.sql
93
94 from_file
95 $migrations = $migrations->from_file('/home/sri/migrations.sql');
96
97 Extract migrations from a file.
98
99 from_string
100 $migrations = $migrations->from_string(
101 '-- 1 up
102 CREATE TABLE foo (bar INT);
103 -- 1 down
104 DROP TABLE foo;'
105 );
106
107 Extract migrations from string.
108
109 latest
110 my $version = $migrations->latest;
111
112 Latest version available.
113
114 migrate
115 $migrations = $migrations->migrate;
116 $migrations = $migrations->migrate(3);
117
118 Migrate from "active" to a different version, up or down, defaults to
119 using "latest". All version numbers need to be positive, with version 0
120 representing an empty database.
121
122 # Reset database
123 $migrations->migrate(0)->migrate;
124
125 sql_for
126 my $sql = $migrations->sql_for(5, 10);
127
128 Get SQL to migrate from one version to another, up or down.
129
131 You can set the "MOJO_MIGRATIONS_DEBUG" environment variable to get
132 some advanced diagnostics information printed to "STDERR".
133
134 MOJO_MIGRATIONS_DEBUG=1
135
137 Mojo::Pg, Mojolicious::Guides, <https://mojolicious.org>.
138
139
140
141perl v5.34.0 2022-01-21 Mojo::Pg::Migrations(3)