Imrpove migrations
This commit is contained in:
1 parent
db316b2914
commit
9aa3da5191
4 files changed
+13
-39
No files matched your search
+7
-21
@@ -1,12 +1,11 @@
|
|||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require "dotenv/load" if ENV.fetch("RACK_ENV", "development") == "development"
|
||||||
|
|
||||||
environment = ENV.fetch("RACK_ENV", "development")
|
environment = ENV.fetch("RACK_ENV", "development")
|
||||||
require "dotenv/load" if environment == "development"
|
|
||||||
|
|
||||||
abort "Environnement non pris en charge." unless
|
abort "Environnement non pris en charge." unless
|
||||||
%w[development production].include?(
|
%w[development production].include?(environment)
|
||||||
ENV.fetch("RACK_ENV", "development")
|
|
||||||
)
|
|
||||||
|
|
||||||
require "date"
|
require "date"
|
||||||
require "io/console"
|
require "io/console"
|
||||||
@@ -97,15 +96,6 @@ members = emails.map do |email|
|
|||||||
[email, find_member.call(email)]
|
[email, find_member.call(email)]
|
||||||
end
|
end
|
||||||
|
|
||||||
console.puts
|
|
||||||
console.print "Adresse de la personne qui enregistre la décision : "
|
|
||||||
recorded_by_email = console.gets&.strip&.downcase
|
|
||||||
|
|
||||||
abort "Adresse électronique obligatoire." if
|
|
||||||
recorded_by_email.to_s.empty?
|
|
||||||
|
|
||||||
recorded_by = find_member.call(recorded_by_email)
|
|
||||||
|
|
||||||
console.puts
|
console.puts
|
||||||
console.puts "Environnement : #{environment}"
|
console.puts "Environnement : #{environment}"
|
||||||
console.puts "Date de l'assemblée : #{assembly_date}"
|
console.puts "Date de l'assemblée : #{assembly_date}"
|
||||||
@@ -117,8 +107,6 @@ members.each do |email, member|
|
|||||||
console.puts " #{name} (#{email})"
|
console.puts " #{name} (#{email})"
|
||||||
end
|
end
|
||||||
|
|
||||||
console.puts
|
|
||||||
console.puts "Décision enregistrée par : #{recorded_by_email}"
|
|
||||||
console.puts
|
console.puts
|
||||||
console.print "Confirmer l'initialisation ? [o/N] "
|
console.print "Confirmer l'initialisation ? [o/N] "
|
||||||
|
|
||||||
@@ -136,8 +124,7 @@ DB.transaction do
|
|||||||
membership = DB[:memberships]
|
membership = DB[:memberships]
|
||||||
.where(
|
.where(
|
||||||
member_id: member[:id],
|
member_id: member[:id],
|
||||||
status: %w[pending accepted],
|
status: %w[pending accepted]
|
||||||
ended_at: nil
|
|
||||||
)
|
)
|
||||||
.first
|
.first
|
||||||
|
|
||||||
@@ -147,7 +134,7 @@ DB.transaction do
|
|||||||
.update(
|
.update(
|
||||||
status: "accepted",
|
status: "accepted",
|
||||||
decided_at: assembly_datetime,
|
decided_at: assembly_datetime,
|
||||||
recorded_by: recorded_by[:id]
|
recorded_by: nil
|
||||||
)
|
)
|
||||||
elsif membership.nil?
|
elsif membership.nil?
|
||||||
DB[:memberships].insert(
|
DB[:memberships].insert(
|
||||||
@@ -155,7 +142,7 @@ DB.transaction do
|
|||||||
status: "accepted",
|
status: "accepted",
|
||||||
requested_at: assembly_datetime,
|
requested_at: assembly_datetime,
|
||||||
decided_at: assembly_datetime,
|
decided_at: assembly_datetime,
|
||||||
recorded_by: recorded_by[:id]
|
recorded_by: nil
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -165,5 +152,4 @@ DB.transaction do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
puts "Noyau initialisé (#{members.length} membres)."
|
puts "Membres du Noyau enregistrés (#{members.length})."
|
||||||
|
|
||||||
@@ -18,16 +18,12 @@ Sequel.migration do
|
|||||||
foreign_key :recorded_by, :members,
|
foreign_key :recorded_by, :members,
|
||||||
type: :Bignum
|
type: :Bignum
|
||||||
|
|
||||||
DateTime :ended_at
|
|
||||||
String :end_reason
|
|
||||||
|
|
||||||
index :status
|
index :status
|
||||||
|
|
||||||
# Un seul dossier en attente ou une seule adhésion
|
# Un seul dossier en attente ou une seule adhésion acceptée.
|
||||||
# en cours par adhérent.
|
|
||||||
index :member_id,
|
index :member_id,
|
||||||
unique: true,
|
unique: true,
|
||||||
where: { status: ["pending", "accepted"], ended_at: nil }
|
where: { status: ["pending", "accepted"] }
|
||||||
|
|
||||||
constraint :memberships_status_valid,
|
constraint :memberships_status_valid,
|
||||||
Sequel.lit("status IN ('pending', 'accepted', 'rejected')")
|
Sequel.lit("status IN ('pending', 'accepted', 'rejected')")
|
||||||
@@ -37,15 +33,7 @@ Sequel.migration do
|
|||||||
"(status = 'pending' AND decided_at IS NULL " \
|
"(status = 'pending' AND decided_at IS NULL " \
|
||||||
"AND recorded_by IS NULL) " \
|
"AND recorded_by IS NULL) " \
|
||||||
"OR (status IN ('accepted', 'rejected') " \
|
"OR (status IN ('accepted', 'rejected') " \
|
||||||
"AND decided_at IS NOT NULL AND recorded_by IS NOT NULL)"
|
"AND decided_at IS NOT NULL)"
|
||||||
)
|
|
||||||
|
|
||||||
constraint :memberships_end_consistent,
|
|
||||||
Sequel.lit(
|
|
||||||
"(ended_at IS NULL AND end_reason IS NULL) " \
|
|
||||||
"OR (status = 'accepted' AND ended_at IS NOT NULL " \
|
|
||||||
"AND end_reason IN ('resignation', 'death', " \
|
|
||||||
"'dissolution', 'exclusion'))"
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ class Netig
|
|||||||
Sequel[:members][:account_id] => rodauth.account_id,
|
Sequel[:members][:account_id] => rodauth.account_id,
|
||||||
Sequel[:members][:kind] => "individual",
|
Sequel[:members][:kind] => "individual",
|
||||||
Sequel[:members][:core_member] => true,
|
Sequel[:members][:core_member] => true,
|
||||||
Sequel[:memberships][:status] => "accepted",
|
Sequel[:memberships][:status] => "accepted"
|
||||||
Sequel[:memberships][:ended_at] => nil
|
|
||||||
)
|
)
|
||||||
.count
|
.count
|
||||||
.positive?
|
.positive?
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>Identité</th>
|
<th>Identité</th>
|
||||||
<th>Type</th>
|
<th>Type</th>
|
||||||
|
<th>Membre du Noyau</th>
|
||||||
<th>Adresse électronique</th>
|
<th>Adresse électronique</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -26,6 +27,7 @@
|
|||||||
<%= member[:kind] == "individual" ?
|
<%= member[:kind] == "individual" ?
|
||||||
"Personne physique" : "Personne morale" %>
|
"Personne physique" : "Personne morale" %>
|
||||||
</td>
|
</td>
|
||||||
|
<td><%= member[:core_member] ? "Oui" : "Non" %></td>
|
||||||
<td><%= member[:email] %></td>
|
<td><%= member[:email] %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -34,4 +36,3 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
Reference in new issue
Block a user