Class: Webhookdb::Tasks::DB
- Inherits:
-
Rake::TaskLib
- Object
- Rake::TaskLib
- Webhookdb::Tasks::DB
- Defined in:
- lib/webhookdb/tasks/db.rb
Instance Method Summary collapse
- #exec(db, cmd) ⇒ Object
-
#initialize ⇒ DB
constructor
A new instance of DB.
Constructor Details
#initialize ⇒ DB
Returns a new instance of DB.
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 76 77 78 79 80 81 |
# File 'lib/webhookdb/tasks/db.rb', line 11 def initialize super namespace :db do desc "Drop all tables in the public schema." task :drop_tables do require "webhookdb/postgres" Webhookdb::Postgres.load_superclasses Webhookdb::Postgres.each_model_superclass do |sc| sc.db[:pg_tables].where(schemaname: "public").each do |tbl| self.exec(sc.db, "DROP TABLE #{tbl[:tablename]} CASCADE") end end end desc "Remove all data from application schemas" task :wipe do require "webhookdb/postgres" Webhookdb::Postgres.load_superclasses Webhookdb::Postgres.each_model_class do |c| c.truncate(cascade: true) end end desc "Run migrations (rake db:migrate[<target>] to go to a specific version)" task :migrate, [:version] do |_, args| require "webhookdb/postgres" Webhookdb::Postgres.load_superclasses Webhookdb::Postgres.run_all_migrations(target: args[:version]&.to_i) end desc "Re-create the database tables. Drop tables and migrate." task reset: ["db:drop_tables", "db:migrate"] desc "Set all model tables to UNLOGGED. Do this after test migrating. NEVER PROD." task :unlogged do raise "Unly run under RACK_ENV=test" unless Webhookdb::RACK_ENV == "test" require "webhookdb/postgres" Webhookdb::Postgres.load_superclasses Webhookdb::Postgres.each_model_superclass do |sc| sc.tsort.reverse_each do |m| self.exec(sc.db, "ALTER TABLE #{m.tablename} SET UNLOGGED") end end end task :drop_replication_databases do require "webhookdb/postgres" Webhookdb::Postgres.load_superclasses Webhookdb::Postgres.each_model_superclass do |c| c.db[:pg_database].grep(:datname, "adb%").select(:datname).all.each do |row| c.db << "DROP DATABASE #{row[:datname]}" end end end task drop_tables_and_replication_databases: ["db:drop_tables", "db:drop_replication_databases"] task wipe_tables_and_drop_replication_databases: ["db:wipe", "db:drop_replication_databases"] task :lookup_org_admin_url, [:org_id] do |_, args| (orgid = args[:org_id]) or raise "Must provide org id as first argument" require "webhookdb" Webhookdb.load_app org_cond = orgid.match?(/^\d$/) ? orgid.to_i : {key: orgid} (org = Webhookdb::Organization[org_cond]) or raise "Org #{orgid} does not exist" u = org.admin_connection_url raise "Org #{orgid} has no connection url yet" if u.blank? print(u) end end end |
Instance Method Details
#exec(db, cmd) ⇒ Object
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/webhookdb/tasks/db.rb', line 83 def exec(db, cmd) print cmd begin db.execute(cmd) print "\n" rescue StandardError print " (error)\n" raise end end |