This repository has been archived by the owner on Jul 3, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathRakefile
87 lines (70 loc) · 2.09 KB
/
Rakefile
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
76
77
78
79
80
81
82
83
84
85
86
87
# frozen_string_literal: true
$LOAD_PATH.unshift '.'
task :environment do
require 'config/environment'
end
task :database do
require 'config/database'
end
desc 'Run Event Stream Processors'
task run_processors: %i[environment database] do
puts 'Starting Event Stream processors'
event_source = Roost.event_source
tracker = Roost.tracker
db_connection = Roost.projections_database
# Need to disconnect before starting the processors
# to ensure each forked process has its own connection
db_connection.disconnect
# Show our ESP logs in foreman immediately
$stdout.sync = true
processors = Roost.all_processors.map do |processor_class|
processor_class.new(tracker: tracker, db_connection: db_connection)
end
EventSourcery::EventProcessing::ESPRunner.new(
event_processors: processors,
event_source: event_source
).start!
end
namespace :db do
desc 'Create database'
task create: :environment do
begin
database.run("CREATE DATABASE #{database_name}")
rescue StandardError => e
puts "Could not create database '#{database_name}': #{e.class.name}"\
"#{e.message}"
end
database.disconnect
end
desc 'Drop database'
task drop: :environment do
database.run("DROP DATABASE IF EXISTS #{database_name}")
database.disconnect
end
desc 'Migrate database'
task migrate: %i[environment database] do
database = EventSourcery::Postgres.config.event_store_database
begin
EventSourcery::Postgres::Schema.create_event_store(db: database)
rescue StandardError => e
puts "Could not create event store: #{e.class.name} #{e.message}"
end
end
desc 'Setup Event Stream projections'
task create_projections: %i[environment database] do
Roost.all_processors.map(&:new).each(&:setup)
end
desc 'Reset Event Stream projections'
task reset_projections: %i[environment database] do
Roost.all_processors.map(&:new).each(&:reset)
end
def database
Sequel.connect URI.join(url, '/template1').to_s
end
def database_name
File.basename(url)
end
def url
Roost.config.database_url
end
end