Compare commits

...

10 Commits

Author SHA1 Message Date
Renovate Bot
567093c449 Update dependency rubocop-rails to v2.29.1
All checks were successful
Run unit tests / rubocop (pull_request) Successful in 2m8s
Run unit tests / check-licenses (pull_request) Successful in 2m40s
Run unit tests / copyright_notice (pull_request) Successful in 3m12s
Run unit tests / unit_tests (pull_request) Successful in 8m46s
Run unit tests / build-static-assets (pull_request) Successful in 16m47s
Run unit tests / rubocop (push) Successful in 42s
Run unit tests / check-licenses (push) Successful in 46s
Run unit tests / copyright_notice (push) Successful in 57s
Run unit tests / unit_tests (push) Successful in 1m45s
Run unit tests / build-static-assets (push) Successful in 9m39s
2025-01-27 03:05:19 +00:00
2147d7ad5e Redo simulations lifecycle (#222)
All checks were successful
Run unit tests / rubocop (push) Successful in 27s
Run unit tests / check-licenses (push) Successful in 32s
Run unit tests / copyright_notice (push) Successful in 36s
Run unit tests / unit_tests (push) Successful in 1m22s
Run unit tests / build-static-assets (push) Successful in 10m9s
## Why

The current way of creating and deleting simulations doesn't scale for big instances. We cannot generate 50 simulations every time a guest confirms attendance, and we should not delete existing valuable simulations. For example, if a guest confirms attendance and declines right after, previously generated simulations should still be valid.

## What

In this PR we are introducing a series of changes that make simulations management easier:

1. We're removing the automatic creation of simulations.
2. Simulations are not removed anymore, neither manually nor automatically.
3. A new endpoint has been defined to create simulations on demand.
4. A digest property has been defined to determine whether a simulation is still valid (meaning there have not been any change in the list of guests involved).

Reviewed-on: #222
Co-authored-by: Manuel Bustillo <bustikiller@bustikiller.com>
Co-committed-by: Manuel Bustillo <bustikiller@bustikiller.com>
2025-01-26 12:53:21 +00:00
f414acb2d5 Test reversibility of migrations (#220)
Some checks failed
Run unit tests / rubocop (push) Failing after 1m10s
Run unit tests / unit_tests (push) Failing after 1m16s
Run unit tests / copyright_notice (push) Successful in 1m16s
Run unit tests / check-licenses (push) Successful in 1m36s
Run unit tests / build-static-assets (push) Has been skipped
We want to make sure that:

1. Migrations are reversible
2. Reapplying migrations added to a PR leads to the same schema.rb

Reviewed-on: #220
Co-authored-by: Manuel Bustillo <bustikiller@bustikiller.com>
Co-committed-by: Manuel Bustillo <bustikiller@bustikiller.com>
2025-01-25 09:43:43 +00:00
66aded5112 Merge pull request 'Update copyright notice action' (#221) from remove-old-copyright-notice into main
All checks were successful
Check usage of free licenses / check-licenses (push) Successful in 39s
Run unit tests / unit_tests (push) Successful in 1m56s
Build Nginx-based docker image / build-static-assets (push) Successful in 12m35s
Reviewed-on: #221
2025-01-23 22:16:01 +00:00
8c12884212 Add copyright notice
All checks were successful
Check usage of free licenses / check-licenses (pull_request) Successful in 1m38s
Add copyright notice / copyright_notice (pull_request) Successful in 3m16s
Run unit tests / unit_tests (pull_request) Successful in 5m31s
Build Nginx-based docker image / build-static-assets (pull_request) Successful in 41m31s
2025-01-23 21:34:23 +00:00
6cead51bb9 Remove all copyright notices to force recreation
All checks were successful
Check usage of free licenses / check-licenses (pull_request) Successful in 1m25s
Add copyright notice / copyright_notice (pull_request) Successful in 3m0s
Run unit tests / unit_tests (pull_request) Successful in 4m54s
Build Nginx-based docker image / build-static-assets (pull_request) Successful in 45m24s
2025-01-23 22:29:26 +01:00
74ca20d3e8 Add copyright notice
Some checks failed
Check usage of free licenses / check-licenses (pull_request) Successful in 1m22s
Add copyright notice / copyright_notice (pull_request) Successful in 2m5s
Run unit tests / unit_tests (pull_request) Successful in 3m45s
Build Nginx-based docker image / build-static-assets (pull_request) Has been cancelled
2025-01-23 21:18:12 +00:00
cedb8dce92 Update copyright notice action
Some checks failed
Add copyright notice / copyright_notice (pull_request) Successful in 2m44s
Check usage of free licenses / check-licenses (pull_request) Successful in 1m55s
Run unit tests / unit_tests (pull_request) Successful in 4m30s
Build Nginx-based docker image / build-static-assets (pull_request) Has been cancelled
2025-01-23 22:15:34 +01:00
006b1893c1 Merge pull request 'Fix error loading arrangements' (#217) from fix/error-loading-arrangements into main
All checks were successful
Check usage of free licenses / check-licenses (push) Successful in 1m24s
Run unit tests / unit_tests (push) Successful in 1m31s
Build Nginx-based docker image / build-static-assets (push) Successful in 28m7s
Reviewed-on: #217
2025-01-23 20:49:01 +00:00
Renovate Bot
fcb1e77a3a Update dependency rubocop to v1.71.0
All checks were successful
Add copyright notice / copyright_notice (pull_request) Successful in 1m28s
Check usage of free licenses / check-licenses (pull_request) Successful in 2m46s
Build Nginx-based docker image / build-static-assets (pull_request) Successful in 17m11s
Run unit tests / unit_tests (pull_request) Successful in 1m4s
Check usage of free licenses / check-licenses (push) Successful in 42s
Run unit tests / unit_tests (push) Successful in 2m6s
Build Nginx-based docker image / build-static-assets (push) Successful in 14m32s
2025-01-23 03:11:38 +00:00
147 changed files with 180 additions and 446 deletions

View File

@ -1,46 +0,0 @@
name: Build Nginx-based docker image
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
build-static-assets:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to the private Docker registry
uses: docker/login-action@v3
with:
registry: ${{ secrets.PRIVATE_REGISTRY_HOST }}
username: ${{ secrets.PRIVATE_REGISTRY_USERNAME }}
password: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
- name: Build and push intermediate stages (build)
uses: docker/build-push-action@v6
with:
context: .
target: build
push: ${{ github.ref == 'refs/heads/main' }}
tags: ${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:build
cache-from: type=registry,ref=${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:build
cache-to: type=inline
- name: Build and push (final)
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.ref == 'refs/heads/main' }}
tags: ${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:latest
cache-from: type=registry,ref=${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:latest
cache-to: type=inline

View File

@ -1,39 +0,0 @@
name: Add copyright notice
on:
pull_request:
permissions:
contents: write
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
copyright_notice:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.ACTIONS_TOKEN }}
ref: ${{ github.head_ref }}
- uses: VinnyBabuManjaly/copyright-action@v1.0.0
with:
CopyrightString: '# Copyright (C) 2024 Manuel Bustillo\n\n'
FileType: '.rb'
Path: 'app/, config/, db/, spec/'
- uses: VinnyBabuManjaly/copyright-action@v1.0.0
with:
CopyrightString: '<%# Copyright (C) 2024 Manuel Bustillo %>\n\n'
FileType: '.erb'
Path: 'app/'
- name: Commit changes
run: |
git config --local user.email "bustikiller@bustikiller.com"
git config --local user.name "Manuel Bustillo"
git add .
if [ -n "$(git status --porcelain)" ]; then
echo "there are changes";
git commit -m "Add copyright notice"
git push
else
echo "no changes";
fi

View File

@ -1,21 +0,0 @@
name: Check usage of free licenses
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
check-licenses:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: ruby/setup-ruby@v1.207.0
- name: Install project dependencies
run: bundle install --jobs `getconf _NPROCESSORS_ONLN`
- name: Run license finder
run: license_finder

View File

@ -10,7 +10,7 @@ concurrency:
jobs: jobs:
unit_tests: unit_tests:
runs-on: ubuntu-latest runs-on: ubuntu-latest
services: services: &services
postgres: postgres:
image: postgres image: postgres
env: env:
@ -22,10 +22,11 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
ref: ${{ github.head_ref }} # Checkout the actual branch, not the result if merged into the base
- uses: ruby/setup-ruby@v1.207.0 - uses: ruby/setup-ruby@v1.207.0
- run: bundle install - run: bundle install
- run: bundle exec rubocop --force-exclusion --parallel - &postgres_wait
- name: Wait until Postgres is ready to accept connections name: Wait until Postgres is ready to accept connections
run: | run: |
apt-get update && apt-get install -f -y postgresql-client apt-get update && apt-get install -f -y postgresql-client
until pg_isready -h postgres -U postgres -d postgres until pg_isready -h postgres -U postgres -d postgres
@ -33,12 +34,126 @@ jobs:
sleep 1 sleep 1
echo "Trying again" echo "Trying again"
done done
- run: | - name: Load schema and run unit tests
run: |
bundle exec rake db:schema:load bundle exec rake db:schema:load
bundle exec rspec bundle exec rspec
env: env:
RAILS_ENV: test RAILS_ENV: test
DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
- name: Get all migrations added
id: changed-migration-files
uses: tj-actions/changed-files@v45
with:
files: |
db/migrate/**.rb
- name: Redo all migrations and check there are no schema changes
if: steps.changed-migration-files.outputs.any_changed == 'true'
env:
ALL_CHANGED_FILES: ${{ steps.changed-migration-files.outputs.all_changed_files }}
RAILS_ENV: test
DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
run: |
echo ${#ALL_CHANGED_FILES[@]} migrations changed:
for file in ${ALL_CHANGED_FILES}; do
echo "$file"
done
bundle exec rake db:migrate:redo STEP=${#ALL_CHANGED_FILES[@]}
git diff --exit-code db/schema.rb
- name: Clean up containers generated by this flow - name: Clean up containers generated by this flow
if: failure() if: failure()
run: docker ps --filter network=$JOB_CONTAINER_NAME-$GITHUB_JOB-network --filter name=$JOB_CONTAINER_NAME-* --format "{{.ID}}" | xargs docker rm -f run: docker ps --filter network=$JOB_CONTAINER_NAME-$GITHUB_JOB-network --filter name=$JOB_CONTAINER_NAME-* --format "{{.ID}}" | xargs docker rm -f
rubocop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: ruby/setup-ruby@v1.207.0
- run: bundle install
- run: bundle exec rubocop --force-exclusion --parallel
check-licenses:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- uses: ruby/setup-ruby@v1.207.0
- name: Install project dependencies
run: bundle install --jobs `getconf _NPROCESSORS_ONLN`
- name: Run license finder
run: license_finder
copyright_notice:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.ACTIONS_TOKEN }}
ref: ${{ github.head_ref }}
- uses: VinnyBabuManjaly/copyright-action@v1.0.0
with:
CopyrightString: '# Copyright (C) 2024-2025 LibreWeddingPlanner contributors\n\n'
FileType: '.rb'
Path: 'app/, config/, db/, spec/'
IgnorePath: 'db'
- uses: VinnyBabuManjaly/copyright-action@v1.0.0
with:
CopyrightString: '<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>\n\n'
FileType: '.erb'
Path: 'app/'
- name: Commit changes
run: |
git config --local user.email "bustikiller@bustikiller.com"
git config --local user.name "Manuel Bustillo"
git add .
if [ -n "$(git status --porcelain)" ]; then
echo "there are changes";
git commit -m "Add copyright notice"
git push
else
echo "no changes";
fi
build-static-assets:
runs-on: ubuntu-latest
timeout-minutes: 30
needs:
- unit_tests
- rubocop
- check-licenses
- copyright_notice
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to the private Docker registry
uses: docker/login-action@v3
with:
registry: ${{ secrets.PRIVATE_REGISTRY_HOST }}
username: ${{ secrets.PRIVATE_REGISTRY_USERNAME }}
password: ${{ secrets.PRIVATE_REGISTRY_TOKEN }}
- name: Build and push intermediate stages (build)
uses: docker/build-push-action@v6
with:
context: .
target: build
push: ${{ github.ref == 'refs/heads/main' }}
tags: ${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:build
cache-from: type=registry,ref=${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:build
cache-to: type=inline
- name: Build and push (final)
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.ref == 'refs/heads/main' }}
tags: ${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:latest
cache-from: type=registry,ref=${{ secrets.PRIVATE_REGISTRY_HOST }}/${{ env.GITHUB_REPOSITORY }}:latest
cache-to: type=inline

View File

@ -94,7 +94,7 @@ GEM
logger (~> 1.5) logger (~> 1.5)
chroma (0.2.0) chroma (0.2.0)
coderay (1.1.3) coderay (1.1.3)
concurrent-ruby (1.3.4) concurrent-ruby (1.3.5)
connection_pool (2.4.1) connection_pool (2.4.1)
crass (1.0.6) crass (1.0.6)
csv (3.3.2) csv (3.3.2)
@ -130,7 +130,7 @@ GEM
csv csv
mini_mime (>= 1.0.0) mini_mime (>= 1.0.0)
multi_xml (>= 0.5.2) multi_xml (>= 0.5.2)
i18n (1.14.6) i18n (1.14.7)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
importmap-rails (2.1.0) importmap-rails (2.1.0)
actionpack (>= 6.0.0) actionpack (>= 6.0.0)
@ -329,7 +329,7 @@ GEM
rswag-ui (2.16.0) rswag-ui (2.16.0)
actionpack (>= 5.2, < 8.1) actionpack (>= 5.2, < 8.1)
railties (>= 5.2, < 8.1) railties (>= 5.2, < 8.1)
rubocop (1.70.0) rubocop (1.71.0)
json (~> 2.3) json (~> 2.3)
language_server-protocol (>= 3.17.0) language_server-protocol (>= 3.17.0)
parallel (~> 1.10) parallel (~> 1.10)
@ -343,7 +343,7 @@ GEM
parser (>= 3.3.1.0) parser (>= 3.3.1.0)
rubocop-factory_bot (2.26.1) rubocop-factory_bot (2.26.1)
rubocop (~> 1.61) rubocop (~> 1.61)
rubocop-rails (2.29.0) rubocop-rails (2.29.1)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
rack (>= 1.1) rack (>= 1.1)
rubocop (>= 1.52.0, < 2.0) rubocop (>= 1.52.0, < 2.0)
@ -481,7 +481,7 @@ CHECKSUMS
childprocess (5.1.0) sha256=9a8d484be2fd4096a0e90a0cd3e449a05bc3aa33f8ac9e4d6dcef6ac1455b6ec childprocess (5.1.0) sha256=9a8d484be2fd4096a0e90a0cd3e449a05bc3aa33f8ac9e4d6dcef6ac1455b6ec
chroma (0.2.0) sha256=64bdcd36a4765fbcd45adc64960cc153101300b4918f90ffdd89f4e2eb954b54 chroma (0.2.0) sha256=64bdcd36a4765fbcd45adc64960cc153101300b4918f90ffdd89f4e2eb954b54
coderay (1.1.3) sha256=dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b coderay (1.1.3) sha256=dc530018a4684512f8f38143cd2a096c9f02a1fc2459edcfe534787a7fc77d4b
concurrent-ruby (1.3.4) sha256=d4aa926339b0a86b5b5054a0a8c580163e6f5dcbdfd0f4bb916b1a2570731c32 concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6
connection_pool (2.4.1) sha256=0f40cf997091f1f04ff66da67eabd61a9fe0d4928b9a3645228532512fab62f4 connection_pool (2.4.1) sha256=0f40cf997091f1f04ff66da67eabd61a9fe0d4928b9a3645228532512fab62f4
crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d
csv (3.3.2) sha256=6ff0c135e65e485d1864dde6c1703b60d34cc9e19bed8452834a0b28a519bd4e csv (3.3.2) sha256=6ff0c135e65e485d1864dde6c1703b60d34cc9e19bed8452834a0b28a519bd4e
@ -499,7 +499,7 @@ CHECKSUMS
fugit (1.11.1) sha256=e89485e7be22226d8e9c6da411664d0660284b4b1c08cacb540f505907869868 fugit (1.11.1) sha256=e89485e7be22226d8e9c6da411664d0660284b4b1c08cacb540f505907869868
globalid (1.2.1) sha256=70bf76711871f843dbba72beb8613229a49429d1866828476f9c9d6ccc327ce9 globalid (1.2.1) sha256=70bf76711871f843dbba72beb8613229a49429d1866828476f9c9d6ccc327ce9
httparty (0.22.0) sha256=78652a5c9471cf0093d3b2083c2295c9c8f12b44c65112f1846af2b71430fa6c httparty (0.22.0) sha256=78652a5c9471cf0093d3b2083c2295c9c8f12b44c65112f1846af2b71430fa6c
i18n (1.14.6) sha256=dc229a74f5d181f09942dd60ab5d6e667f7392c4ee826f35096db36d1fe3614c i18n (1.14.7) sha256=ceba573f8138ff2c0915427f1fc5bdf4aa3ab8ae88c8ce255eb3ecf0a11a5d0f
importmap-rails (2.1.0) sha256=9f10c67d60651a547579f448100d033df311c5d5db578301374aeb774faae741 importmap-rails (2.1.0) sha256=9f10c67d60651a547579f448100d033df311c5d5db578301374aeb774faae741
io-console (0.8.0) sha256=cd6a9facbc69871d69b2cb8b926fc6ea7ef06f06e505e81a64f14a470fddefa2 io-console (0.8.0) sha256=cd6a9facbc69871d69b2cb8b926fc6ea7ef06f06e505e81a64f14a470fddefa2
irb (1.14.3) sha256=c457f1f2f1438ae9ce5c5be3981ae2138dec7fb894c7d73777eeeb0a6c0d0752 irb (1.14.3) sha256=c457f1f2f1438ae9ce5c5be3981ae2138dec7fb894c7d73777eeeb0a6c0d0752
@ -578,10 +578,10 @@ CHECKSUMS
rswag-api (2.16.0) sha256=b653f7bd92e98be18b01ab4525d88950d7b0960e293a99f856b9efcee3ae6074 rswag-api (2.16.0) sha256=b653f7bd92e98be18b01ab4525d88950d7b0960e293a99f856b9efcee3ae6074
rswag-specs (2.16.0) sha256=8ba26085c408b0bd2ed21dc8015c80f417c7d34c63720ab7133c2549b5bd2a91 rswag-specs (2.16.0) sha256=8ba26085c408b0bd2ed21dc8015c80f417c7d34c63720ab7133c2549b5bd2a91
rswag-ui (2.16.0) sha256=a1f49e927dceda92e6e6e7c1000f1e217ee66c565f69e28131dc98b33cd3a04f rswag-ui (2.16.0) sha256=a1f49e927dceda92e6e6e7c1000f1e217ee66c565f69e28131dc98b33cd3a04f
rubocop (1.70.0) sha256=96751f8440b36a0ac6e9a8ab596900803118d83d6b83f2037bf8b3d7a5bc440e rubocop (1.71.0) sha256=e19679efd447346ac476122313d3788ae23c38214790bcf660e984c747608bf0
rubocop-ast (1.37.0) sha256=9513ac88aaf113d04b52912533ffe46475de1362d4aa41141b51b2455827c080 rubocop-ast (1.37.0) sha256=9513ac88aaf113d04b52912533ffe46475de1362d4aa41141b51b2455827c080
rubocop-factory_bot (2.26.1) sha256=8de13cd4edcee5ca800f255188167ecef8dbfc3d1fae9f15734e9d2e755392aa rubocop-factory_bot (2.26.1) sha256=8de13cd4edcee5ca800f255188167ecef8dbfc3d1fae9f15734e9d2e755392aa
rubocop-rails (2.29.0) sha256=35bffd140c80671453aafac0e2d5ab5b3dd65736a3fc8f3936ccca226b89c234 rubocop-rails (2.29.1) sha256=41c2fcf48d5d62f4a5f574d5f1c97bbaf4cba88ee367936c98b3422d047b17aa
rubocop-rspec (3.4.0) sha256=8721c13b6a8c9530a7ac481cea9423022f946fcf72428bda8289f8b57e4d4885 rubocop-rspec (3.4.0) sha256=8721c13b6a8c9530a7ac481cea9423022f946fcf72428bda8289f8b57e4d4885
rubocop-rspec_rails (2.30.0) sha256=888112e83f9d7ef7ad2397e9d69a0b9614a4bae24f072c399804a180f80c4c46 rubocop-rspec_rails (2.30.0) sha256=888112e83f9d7ef7ad2397e9d69a0b9614a4bae24f072c399804a180f80c4c46
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,12 +1,18 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true
class TablesArrangementsController < ApplicationController class TablesArrangementsController < ApplicationController
def index def index
render json: TablesArrangement.order(discomfort: :asc).limit(3).as_json(only: %i[id name discomfort]) current_digest = Tables::Distribution.digest(current_tenant)
render json: TablesArrangement
.order(valid: :desc)
.order(discomfort: :asc)
.select(:id, :name, :discomfort)
.select("digest = '#{current_digest}'::uuid as valid")
.limit(20)
.as_json(only: %i[id name discomfort valid])
end end
def show def show
@ -18,6 +24,12 @@ class TablesArrangementsController < ApplicationController
.then { |result| render json: { id: params[:id], tables: result } } .then { |result| render json: { id: params[:id], tables: result } }
end end
def create
TableSimulatorJob.perform_later(current_tenant.id)
render json: {}, status: :created
end
private private
def format(number:, guests:) def format(number:, guests:)

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true
@ -43,16 +41,5 @@ class Guest < ApplicationRecord
scope :potential, -> { where.not(status: %i[declined considered]) } scope :potential, -> { where.not(status: %i[declined considered]) }
after_destroy :recalculate_simulations
after_save :recalculate_simulations, if: :saved_change_to_status?
has_many :seats, dependent: :delete_all has_many :seats, dependent: :delete_all
private
def recalculate_simulations
TablesArrangement.delete_all
ActiveJob.perform_all_later(50.times.map { TableSimulatorJob.new(wedding_id) })
end
end end

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true
@ -9,6 +7,7 @@
# Table name: tables_arrangements # Table name: tables_arrangements
# #
# id :uuid not null, primary key # id :uuid not null, primary key
# digest :uuid not null
# discomfort :integer # discomfort :integer
# name :string not null # name :string not null
# created_at :datetime not null # created_at :datetime not null

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true
@ -21,4 +19,6 @@ class Wedding < ApplicationRecord
SLUG_REGEX = /[a-z\d-]+/ SLUG_REGEX = /[a-z\d-]+/
validates :slug, presence: true, uniqueness: true, format: { with: /\A#{SLUG_REGEX}\z/ } validates :slug, presence: true, uniqueness: true, format: { with: /\A#{SLUG_REGEX}\z/ }
has_many :guests, dependent: :delete_all
end end

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true
@ -8,7 +6,13 @@ require_relative '../../extensions/tree_node_extension'
module Tables module Tables
class Distribution class Distribution
attr_accessor :tables, :min_per_table, :max_per_table class << self
def digest(wedding)
Digest::UUID.uuid_v5(wedding.id, wedding.guests.potential.order(:id).pluck(:id).join)
end
end
attr_accessor :tables, :min_per_table, :max_per_table, :hierarchy
def initialize(min_per_table:, max_per_table:) def initialize(min_per_table:, max_per_table:)
@min_per_table = min_per_table @min_per_table = min_per_table
@ -56,7 +60,10 @@ module Tables
Seat.insert_all!(records_to_store) Seat.insert_all!(records_to_store)
arrangement.update!(discomfort:) arrangement.update!(
discomfort:,
digest: self.class.digest(tables.first.first.wedding)
)
end end
end end

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
<%# Copyright (C) 2024 Manuel Bustillo %>
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %> <%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
<!DOCTYPE html> <!DOCTYPE html>

View File

@ -1,5 +1,3 @@
<%# Copyright (C) 2024 Manuel Bustillo %>
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %> <%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
<%= yield %> <%= yield %>

View File

@ -1,5 +1,3 @@
<%# Copyright (C) 2024 Manuel Bustillo %>
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %> <%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
<p>Welcome <%= @email %>!</p> <p>Welcome <%= @email %>!</p>

View File

@ -1,5 +1,3 @@
<%# Copyright (C) 2024 Manuel Bustillo %>
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %> <%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
<p>Hello <%= @email %>!</p> <p>Hello <%= @email %>!</p>

View File

@ -1,5 +1,3 @@
<%# Copyright (C) 2024 Manuel Bustillo %>
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %> <%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
<p>Hello <%= @resource.email %>!</p> <p>Hello <%= @resource.email %>!</p>

View File

@ -1,5 +1,3 @@
<%# Copyright (C) 2024 Manuel Bustillo %>
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %> <%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
<p>Hello <%= @resource.email %>!</p> <p>Hello <%= @resource.email %>!</p>

View File

@ -1,5 +1,3 @@
<%# Copyright (C) 2024 Manuel Bustillo %>
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %> <%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
<p>Hello <%= @resource.email %>!</p> <p>Hello <%= @resource.email %>!</p>

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
require_relative 'boot' require_relative 'boot'

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# Load the Rails application. # Load the Rails application.

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
require "active_support/core_ext/integer/time" require "active_support/core_ext/integer/time"

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
require "active_support/core_ext/integer/time" require "active_support/core_ext/integer/time"

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
require "active_support/core_ext/integer/time" require "active_support/core_ext/integer/time"

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# Pin npm packages by running ./bin/importmap # Pin npm packages by running ./bin/importmap

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
ActsAsTenant.configure do |config| ActsAsTenant.configure do |config|

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
Chroma.define_palette :decreasing_saturation do Chroma.define_palette :decreasing_saturation do

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# config/initializers/cors.rb # config/initializers/cors.rb

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
Rswag::Api.configure do |c| Rswag::Api.configure do |c|

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
Rswag::Ui.configure do |c| Rswag::Ui.configure do |c|

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class Numeric class Numeric

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# This configuration file will be evaluated by Puma. The top-level methods that # This configuration file will be evaluated by Puma. The top-level methods that

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
Rails.application.routes.draw do Rails.application.routes.draw do
@ -39,7 +37,7 @@ Rails.application.routes.draw do
resources :expenses, only: %i[index create update destroy] do resources :expenses, only: %i[index create update destroy] do
get :summary, on: :collection get :summary, on: :collection
end end
resources :tables_arrangements, only: %i[index show] resources :tables_arrangements, only: %i[index show create]
resources :summary, only: :index resources :summary, only: :index
root to: redirect("/%{slug}") root to: redirect("/%{slug}")

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class CreateExpenses < ActiveRecord::Migration[7.1] class CreateExpenses < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class CreateGuests < ActiveRecord::Migration[7.1] class CreateGuests < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class CreateTablesArrangements < ActiveRecord::Migration[7.1] class CreateTablesArrangements < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class CreateSeats < ActiveRecord::Migration[7.1] class CreateSeats < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class CreateGroups < ActiveRecord::Migration[7.1] class CreateGroups < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class AddParentToGroup < ActiveRecord::Migration[7.1] class AddParentToGroup < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class AddGroupToGuest < ActiveRecord::Migration[7.1] class AddGroupToGuest < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class AddStatusToGuest < ActiveRecord::Migration[7.1] class AddStatusToGuest < ActiveRecord::Migration[7.1]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class DropTaggableTables < ActiveRecord::Migration[7.2] class DropTaggableTables < ActiveRecord::Migration[7.2]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class AddNameToTablesArrangements < ActiveRecord::Migration[7.2] class AddNameToTablesArrangements < ActiveRecord::Migration[7.2]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class SolidQueueInstall < ActiveRecord::Migration[7.2] class SolidQueueInstall < ActiveRecord::Migration[7.2]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class RemoveEmailFromGuests < ActiveRecord::Migration[7.2] class RemoveEmailFromGuests < ActiveRecord::Migration[7.2]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class AddColorToGroup < ActiveRecord::Migration[7.2] class AddColorToGroup < ActiveRecord::Migration[7.2]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class MergeGuestNames < ActiveRecord::Migration[8.0] class MergeGuestNames < ActiveRecord::Migration[8.0]

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
# frozen_string_literal: true # frozen_string_literal: true

View File

@ -1,5 +1,3 @@
# Copyright (C) 2024 Manuel Bustillo
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # Copyright (C) 2024-2025 LibreWeddingPlanner contributors
class CreateWeddings < ActiveRecord::Migration[8.0] class CreateWeddings < ActiveRecord::Migration[8.0]

Some files were not shown because too many files have changed in this diff Show More