|
10 | 10 | #
|
11 | 11 | # It's strongly recommended that you check this file into your version control system.
|
12 | 12 |
|
13 |
| -ActiveRecord::Schema.define(version: 2019_09_25_030512) do |
| 13 | +ActiveRecord::Schema.define(version: 2019_10_21_005121) do |
14 | 14 |
|
15 | 15 | # These are extensions that must be enabled in order to support this database
|
16 | 16 | enable_extension "plpgsql"
|
|
237 | 237 | add_foreign_key "taggings", "items"
|
238 | 238 | add_foreign_key "taggings", "tags"
|
239 | 239 |
|
240 |
| - create_view "monthly_adjustments", sql_definition: <<-SQL |
241 |
| - SELECT (date_part('year'::text, adjustments.created_at))::integer AS year, |
242 |
| - (date_part('month'::text, adjustments.created_at))::integer AS month, |
243 |
| - count(*) FILTER (WHERE (adjustments.kind = 'membership'::adjustment_kind)) AS membership_count, |
244 |
| - count(*) FILTER (WHERE (adjustments.kind = 'fine'::adjustment_kind)) AS fine_count, |
245 |
| - sum((- adjustments.amount_cents)) FILTER (WHERE (adjustments.kind = 'fine'::adjustment_kind)) AS fine_total_cents, |
246 |
| - sum((- adjustments.amount_cents)) FILTER (WHERE (adjustments.kind = 'membership'::adjustment_kind)) AS membership_total_cents, |
247 |
| - sum(adjustments.amount_cents) FILTER (WHERE (adjustments.kind = 'payment'::adjustment_kind)) AS payment_total_cents, |
248 |
| - sum(adjustments.amount_cents) FILTER (WHERE ((adjustments.kind = 'payment'::adjustment_kind) AND (adjustments.payment_source = 'square'::adjustment_source))) AS square_total_cents, |
249 |
| - sum(adjustments.amount_cents) FILTER (WHERE ((adjustments.kind = 'payment'::adjustment_kind) AND (adjustments.payment_source = 'cash'::adjustment_source))) AS cash_total_cents, |
250 |
| - sum(adjustments.amount_cents) FILTER (WHERE ((adjustments.kind = 'payment'::adjustment_kind) AND (adjustments.payment_source = 'forgiveness'::adjustment_source))) AS forgiveness_total_cents |
251 |
| - FROM adjustments |
252 |
| - GROUP BY ((date_part('year'::text, adjustments.created_at))::integer), ((date_part('month'::text, adjustments.created_at))::integer); |
253 |
| - SQL |
254 | 240 | create_view "loan_summaries", sql_definition: <<-SQL
|
255 | 241 | SELECT loans.item_id,
|
256 | 242 | loans.member_id,
|
|
266 | 252 | FROM loans
|
267 | 253 | GROUP BY loans.item_id, loans.member_id, COALESCE(loans.initial_loan_id, loans.id);
|
268 | 254 | SQL
|
| 255 | + create_view "monthly_adjustments", sql_definition: <<-SQL |
| 256 | + SELECT (date_part('year'::text, adjustments.created_at))::integer AS year, |
| 257 | + (date_part('month'::text, adjustments.created_at))::integer AS month, |
| 258 | + count(*) FILTER (WHERE (adjustments.kind = 'membership'::adjustment_kind)) AS membership_count, |
| 259 | + count(*) FILTER (WHERE (adjustments.kind = 'fine'::adjustment_kind)) AS fine_count, |
| 260 | + sum((- adjustments.amount_cents)) FILTER (WHERE (adjustments.kind = 'fine'::adjustment_kind)) AS fine_total_cents, |
| 261 | + sum((- adjustments.amount_cents)) FILTER (WHERE (adjustments.kind = 'membership'::adjustment_kind)) AS membership_total_cents, |
| 262 | + sum(adjustments.amount_cents) FILTER (WHERE (adjustments.kind = 'payment'::adjustment_kind)) AS payment_total_cents, |
| 263 | + sum(adjustments.amount_cents) FILTER (WHERE ((adjustments.kind = 'payment'::adjustment_kind) AND (adjustments.payment_source = 'square'::adjustment_source))) AS square_total_cents, |
| 264 | + sum(adjustments.amount_cents) FILTER (WHERE ((adjustments.kind = 'payment'::adjustment_kind) AND (adjustments.payment_source = 'cash'::adjustment_source))) AS cash_total_cents, |
| 265 | + sum(adjustments.amount_cents) FILTER (WHERE ((adjustments.kind = 'payment'::adjustment_kind) AND (adjustments.payment_source = 'forgiveness'::adjustment_source))) AS forgiveness_total_cents |
| 266 | + FROM adjustments |
| 267 | + GROUP BY ((date_part('year'::text, adjustments.created_at))::integer), ((date_part('month'::text, adjustments.created_at))::integer); |
| 268 | + SQL |
| 269 | + create_view "monthly_activities", sql_definition: <<-SQL |
| 270 | + WITH dates AS ( |
| 271 | + SELECT min(date_trunc('month'::text, loans.created_at)) AS startm, |
| 272 | + max(date_trunc('month'::text, loans.created_at)) AS endm |
| 273 | + FROM loans |
| 274 | + ), months AS ( |
| 275 | + SELECT generate_series(dates.startm, dates.endm, '1 mon'::interval) AS month |
| 276 | + FROM dates |
| 277 | + ) |
| 278 | + SELECT (date_part('year'::text, months.month))::integer AS year, |
| 279 | + (date_part('month'::text, months.month))::integer AS month, |
| 280 | + count(DISTINCT l.id) AS loans_count, |
| 281 | + count(DISTINCT l.member_id) AS active_members_count, |
| 282 | + count(DISTINCT m.id) FILTER (WHERE (m.status = 0)) AS pending_members_count, |
| 283 | + count(DISTINCT m.id) FILTER (WHERE (m.status = 1)) AS new_members_count |
| 284 | + FROM ((months |
| 285 | + LEFT JOIN loans l ON ((date_trunc('month'::text, l.created_at) = months.month))) |
| 286 | + LEFT JOIN members m ON ((date_trunc('month'::text, m.created_at) = months.month))) |
| 287 | + GROUP BY months.month |
| 288 | + ORDER BY months.month; |
| 289 | + SQL |
269 | 290 | end
|
0 commit comments