Skip to content

chore(organization): Not null organization_id #3687

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 17, 2025

Conversation

vincent-pochet
Copy link
Collaborator

@vincent-pochet vincent-pochet commented May 20, 2025

Context

This PR is part of the epic to add organization_id on all tables of the application

Description

The current one is removing the optional attribute on all belongs_to :organization relations. In a next step the presence will be enforced at database level with a not null constraint

The PR also updates the relations from customer and organization table to make sure it uses the organization_id column.

NOTE: Since this change will require all tables to be updated before the release, a migration guide will be added (See https://getlago.com/docs/guide/migration/migration-to-v1.29.0 as an example). The guide will state that customer will have to first run the migrations:fill_organization_id rake task

@vincent-pochet vincent-pochet force-pushed the chore-not-null-organization-id branch 30 times, most recently from ae4844a to ab4d121 Compare May 22, 2025 15:42
Copy link
Contributor

@annvelents annvelents left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😍😍😍
Amazing job!

Just in case, are we going to add a not null constraint in the db?

Copy link
Contributor

@diegocharles diegocharles left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vincent-pochet having the organization_id associated in every table is a very smart way to optimize the queries and make the code simpler. Awesome job man 💪

@vincent-pochet
Copy link
Collaborator Author

😍😍😍 Amazing job!

Just in case, are we going to add a not null constraint in the db?

Thanks! Yes definitely, that will be the last step for this change

@vincent-pochet vincent-pochet force-pushed the chore-not-null-organization-id branch from a6813e7 to f177322 Compare June 17, 2025 07:20
@vincent-pochet vincent-pochet merged commit 3fb5725 into main Jun 17, 2025
14 checks passed
@vincent-pochet vincent-pochet deleted the chore-not-null-organization-id branch June 17, 2025 08:25
vincent-pochet added a commit that referenced this pull request Jun 17, 2025
## Context

As we are planing to release the ["not null organization" pull
request](#3687), it was decided
to take this as an opportunity to squash the old database migration into
a single migration file, to reduce the number of migrations.

Related to #3829

## Description

Lago version 1.20.0 was used as a reference to squash the migrations.

- All migrations from previous versions are merged in a single
`InitialMigration` migration file.
- It uses the SQL format to preserve the orders and make sure the
migration test workflow continue to pass on Github no matter if the
structure comes from previous migrations or from this file.
- It reuse the previous last migration version `20250122112050` to make
sure it will not be executed on instance running v1.20.0 or later.
- It adds a small check to fail running the migration if an upgrade is
made from a version prior to 1.20.0 to the bridge release containing
this change
- All squashed migrations files are removed
rsempe added a commit that referenced this pull request Jun 17, 2025
rsempe added a commit that referenced this pull request Jun 17, 2025
Reverts #3687.

We want to exclude that from the `1.30` self-hosted release.
Will be included on the `1.31` release.
vincent-pochet added a commit that referenced this pull request Jun 26, 2025
…#3842)

Reapply #3839 that was
rollbacked to allow a non blocking release

## Context

As we are planing to release the ["not null organization" pull
request](#3687), it was decided
to take this as an opportunity to squash the old database migration into
a single migration file, to reduce the number of migrations.

Related to #3829

## Description

Lago version 1.20.0 was used as a reference to squash the migrations.

- All migrations from previous versions are merged in a single
`InitialMigration` migration file.
- It uses the SQL format to preserve the orders and make sure the
migration test workflow continue to pass on Github no matter if the
structure comes from previous migrations or from this file.
- It reuse the previous last migration version `20250122112050` to make
sure it will not be executed on instance running v1.20.0 or later.
- It adds a small check to fail running the migration if an upgrade is
made from a version prior to 1.20.0 to the bridge release containing
this change
- All squashed migrations files are removed
vincent-pochet added a commit that referenced this pull request Jun 27, 2025
…3879)

## Context
Now that we are done with #3687
to add a presence validation on the organization_id field), let's add a
proper NOT NULL constraint at the DB level!

## Description

This PR adds:
- The not null constraint on  `theapplied_usage_thresholds` table
- Add new `not_null_organization_id` rails generator to make it easier
to create the migration files

A lot of new migrations are coming :)
diegocharles pushed a commit that referenced this pull request Jun 30, 2025
…#3842)

Reapply #3839 that was
rollbacked to allow a non blocking release

## Context

As we are planing to release the ["not null organization" pull
request](#3687), it was decided
to take this as an opportunity to squash the old database migration into
a single migration file, to reduce the number of migrations.

Related to #3829

## Description

Lago version 1.20.0 was used as a reference to squash the migrations.

- All migrations from previous versions are merged in a single
`InitialMigration` migration file.
- It uses the SQL format to preserve the orders and make sure the
migration test workflow continue to pass on Github no matter if the
structure comes from previous migrations or from this file.
- It reuse the previous last migration version `20250122112050` to make
sure it will not be executed on instance running v1.20.0 or later.
- It adds a small check to fail running the migration if an upgrade is
made from a version prior to 1.20.0 to the bridge release containing
this change
- All squashed migrations files are removed
diegocharles pushed a commit that referenced this pull request Jul 11, 2025
## Context

This PR is part of the epic to add `organization_id` on all tables of
the application

## Description

The current one is removing the `optional` attribute on all `belongs_to
:organization` relations. In a next step the presence will be enforced
at database level with a not null constraint

The PR also updates the relations from customer and organization table
to make sure it uses the organization_id column.

**NOTE**: Since this change will require all tables to be updated before
the release, a migration guide will be added (See
https://getlago.com/docs/guide/migration/migration-to-v1.29.0 as an
example). The guide will state that customer will have to first run the
[migrations:fill_organization_id rake
task](https://github.com/getlago/lago-api/blob/main/lib/tasks/migrations/organization_id.rake)
diegocharles pushed a commit that referenced this pull request Jul 11, 2025
## Context

As we are planing to release the ["not null organization" pull
request](#3687), it was decided
to take this as an opportunity to squash the old database migration into
a single migration file, to reduce the number of migrations.

Related to #3829

## Description

Lago version 1.20.0 was used as a reference to squash the migrations.

- All migrations from previous versions are merged in a single
`InitialMigration` migration file.
- It uses the SQL format to preserve the orders and make sure the
migration test workflow continue to pass on Github no matter if the
structure comes from previous migrations or from this file.
- It reuse the previous last migration version `20250122112050` to make
sure it will not be executed on instance running v1.20.0 or later.
- It adds a small check to fail running the migration if an upgrade is
made from a version prior to 1.20.0 to the bridge release containing
this change
- All squashed migrations files are removed
diegocharles pushed a commit that referenced this pull request Jul 11, 2025
Reverts #3687.

We want to exclude that from the `1.30` self-hosted release.
Will be included on the `1.31` release.
diegocharles pushed a commit that referenced this pull request Jul 11, 2025
…#3842)

Reapply #3839 that was
rollbacked to allow a non blocking release

## Context

As we are planing to release the ["not null organization" pull
request](#3687), it was decided
to take this as an opportunity to squash the old database migration into
a single migration file, to reduce the number of migrations.

Related to #3829

## Description

Lago version 1.20.0 was used as a reference to squash the migrations.

- All migrations from previous versions are merged in a single
`InitialMigration` migration file.
- It uses the SQL format to preserve the orders and make sure the
migration test workflow continue to pass on Github no matter if the
structure comes from previous migrations or from this file.
- It reuse the previous last migration version `20250122112050` to make
sure it will not be executed on instance running v1.20.0 or later.
- It adds a small check to fail running the migration if an upgrade is
made from a version prior to 1.20.0 to the bridge release containing
this change
- All squashed migrations files are removed
diegocharles pushed a commit that referenced this pull request Jul 11, 2025
…3879)

## Context
Now that we are done with #3687
to add a presence validation on the organization_id field), let's add a
proper NOT NULL constraint at the DB level!

## Description

This PR adds:
- The not null constraint on  `theapplied_usage_thresholds` table
- Add new `not_null_organization_id` rails generator to make it easier
to create the migration files

A lot of new migrations are coming :)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants