-
Notifications
You must be signed in to change notification settings - Fork 54
/
sam.cr
75 lines (64 loc) · 1.95 KB
/
sam.cr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
require "./generators/*"
Sam.namespace "db" do
desc "Will call all pending migrations"
task "migrate" do
Jennifer::Migration::Runner.migrate
end
desc "Invoke next migration. Usage: db:step [<count>]"
task "step" do |_, args|
if !args.raw.empty?
Jennifer::Migration::Runner.migrate(args.raw.last.as(String).to_i)
else
Jennifer::Migration::Runner.migrate(1)
end
end
desc "Rollback migration. Usage: db:rollback [v=<migration_exclusive_version> | <count_to_rollback>]"
task "rollback" do |_, args|
if !args.raw.empty?
Jennifer::Migration::Runner.rollback({:count => args.raw.last.as(String).to_i})
elsif args["v"]?
Jennifer::Migration::Runner.rollback({:to => args["v"].as(String)})
else
Jennifer::Migration::Runner.rollback({:count => 1})
end
end
desc "Drops database"
task "drop" do
Jennifer::Migration::Runner.drop
end
desc "Creates database"
task "create" do
Jennifer::Migration::Runner.create
end
desc "Populate database with default entities."
task "seed" do
end
desc "Runs db:create, db:migrate and db:seed"
task "setup", %w(create migrate seed) do
end
namespace "schema" do
desc "Loads database structure from the structure.sql file"
task "load" do
Jennifer::Migration::Runner.load_schema
end
end
desc "Prints version of the last run migration"
task "version" do
version = Jennifer::Migration::Version.all.last
if version
puts version.not_nil!.version
else
puts "DB has no ran migration yet."
end
end
end
Sam.namespace "generate" do
desc "Generates migration template. Usage - generate:migration <migration_name>"
task "migration" do |_, args|
Jennifer::Generators::Migration.new(args.raw).render
end
desc "Generates model and migrations template. Usage - generate:model <ModelName> <optional fields definition>"
task "model" do |_, args|
Jennifer::Generators::Model.new(args.raw).render
end
end