1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-04 11:17:02 +02:00
Commit Graph

305 Commits

Author SHA1 Message Date
Fredrik Strand Oseberg
9bdad5ee44
Feat/tag colors migration (#9560)
Adds a color field to the tag types table
2025-03-18 15:01:59 +01:00
Jaanus Sellin
482443f373
feat: frontend consumption table (#9523)
Similar to backend traffic, we have table for frontend traffic. We might
want to rename the backend on to align with this one.
2025-03-12 16:44:01 +02:00
Vignesh S
ffb17d43ba
fix: features table migrations in 20220603081324-add-archive-at-to-fea… (#9518)
Changes to migration file -
20220603081324-add-archive-at-to-feature-toggle.js

1. Fixes the migration script where features table is updated with
archived_at column with the latest date instead of taking the date from
the events table.
2. Also it fails for the latest toggle which was archived and then
revived but after migration it updates the toggle as archived toggle.
3. Also because of the buggy reference to the outer join's events table
`e` its taking a huge time to run the migration.

This PR fixes all the above issues.

## About the changes

We have faced an issue during migration of unleash-server from 4.8.2 to
6.6.0 where one of our toggle which was archived and unarchived once
before migration and that was the latest toggle in terms of the archived
date, but after the migration was ran it was in archived status.

Upon further debugging and running the SQL command in the features table
migration file we noticed that we should not be referencing the outer
join's events table `e` for the feature_name check and additionally we
should add the features table's archived toggle check instead.

### Important files

The change in only in this file.


[20220603081324-add-archive-at-to-feature-toggle.js](https://github.com/Unleash/unleash/pull/9518/files#diff-b91c299b96edc46ca3a1963bf54966aa777c9fa107f3bd8b45f5fb54dc57460e)

## Discussion points

Let me know if any further details is required.
2025-03-12 10:28:04 +01:00
Mateusz Kwasniewski
dfed9c0773
feat: create connection count consumption table (#9444) 2025-03-10 12:51:11 +01:00
David Leek
2ae447cd40
chore: migration for new archive columns on release defintion (#9412) 2025-03-04 14:36:30 +01:00
Christopher Kolstad
edd03d02dd
task: add status_code to edge traffic table to store 304s as well (#9312) 2025-02-14 14:52:45 +01:00
Christopher Kolstad
1dad28fdb5
task: add edge observability tables (#9307)
Adds two stat tables to store edge observability data.
2025-02-14 08:48:13 +00:00
David Leek
5921f0ea09
chore: add migration that backfills scim user email hashes (#9295) 2025-02-12 09:05:36 +01:00
David Leek
9a8607b07e
chore: clear scim fields when deleting user + migration for existing cases (#9217) 2025-02-05 15:45:51 +01:00
Nuno Góis
138410eafd
chore: drop release plan template view permissions (#9195)
https://linear.app/unleash/issue/2-3225/drop-the-release-template-view-permissions

Drops the release plan template view permissions in favor of an "open by
default" approach.

Should merge the Enterprise PR first.
2025-02-03 16:24:25 +00:00
Tymoteusz Czech
af1b6c8c37
migration: cors root role permission (#9080)
after https://github.com/Unleash/unleash/pull/8996
2025-01-13 09:19:27 +01:00
Mateusz Kwasniewski
67068afb13
chore: fix migration file (#9079) 2025-01-10 13:41:07 +01:00
Mateusz Kwasniewski
f47de55d67
chore: fix migration file (#9078) 2025-01-10 13:36:34 +01:00
Mateusz Kwasniewski
5a1f1a00ba
feat: migration for unique connections (#9076) 2025-01-10 13:25:09 +01:00
Tymoteusz Czech
608a3986af
migration: read logs permission (#9049)
continuation of https://github.com/Unleash/unleash/pull/8996
2025-01-08 10:52:41 +01:00
Fredrik Strand Oseberg
2363d99fe7
feat: add migration (#8891) 2025-01-06 14:38:56 +01:00
Nuno Góis
adaf91a791
chore: remove Unleash AI (#9010)
https://linear.app/unleash/issue/2-3071/finish-experiment

Removes Unleash AI.

Also removes other related changes made during the experiment
development.
2024-12-20 11:02:49 +00:00
Tymoteusz Czech
4fb5f6a96c
migration: add auth config permission (#8988)
after https://github.com/Unleash/unleash/pull/8987
2024-12-17 10:33:14 +01:00
Tymoteusz Czech
67864e7008
migration: add permissions for instance maintenance (#8885)
after #8875
2024-12-12 16:53:46 +01:00
Jaanus Sellin
17d3b5c2fb
fix: make project ui query optimized (#8961)
From 13 seconds to 0.1 seconds.

1. Joining 1 million events to projects/features is slow. **Solved by
using CTE.**
2. Running grouping on 1 million rows is slow. **Solved by adding
index.**
2024-12-12 08:41:10 +02:00
Nuno Góis
c9110224a5
chore: filter out milestone strategies in features_view (#8883)
https://linear.app/unleash/issue/2-3033/filter-out-release-plan-milestone-strategies-from-admin-feature

Filters out milestone strategies from our `features_view`.

This felt like the most elegant way to address this, since it seems we
only rely on this view to fetch the feature strategies in the admin UI.


### No more milestone strategies showing up on our UI when we have a
running milestone


![image](https://github.com/user-attachments/assets/02bac5a5-7ddb-4bde-b487-8b6bca0923b5)

### However they're still part of the client features response

```json
{
	"name": "r-plan",
	"type": "release",
	"enabled": false,
	"project": "default",
	"stale": false,
	"strategies": [
		{
			"name": "flexibleRollout",
			"constraints": [
				{
					"values": [
						"Portugal"
					],
					"inverted": false,
					"operator": "IN",
					"contextName": "country",
					"caseInsensitive": false
				},
				{
					"values": [
						"Portugal",
						"Norway"
					],
					"inverted": false,
					"operator": "IN",
					"contextName": "country",
					"caseInsensitive": false
				}
			],
			"parameters": {
				"groupId": "newOverview",
				"rollout": "100",
				"stickiness": "default"
			},
			"variants": [
				{
					"name": "A",
					"weight": 500,
					"stickiness": "default",
					"weightType": "variable"
				},
				{
					"name": "B",
					"weight": 500,
					"stickiness": "default",
					"weightType": "variable"
				}
			]
		},
		{
			"name": "flexibleRollout",
			"constraints": [],
			"parameters": {
				"groupId": "much_feature",
				"rollout": "25",
				"stickiness": "default"
			},
			"variants": []
		},
		{
			"name": "flexibleRollout",
			"constraints": [],
			"parameters": {
				"groupId": "r-plan",
				"rollout": "100",
				"stickiness": "default"
			},
			"variants": []
		}
	],
	"variants": [],
	"description": null,
	"impressionData": false
},
```
2024-12-02 08:17:17 +00:00
David Leek
db02918a35
chore: make milestone_strategies.title nullable (#8864) 2024-11-27 09:16:24 +01:00
Christopher Kolstad
0f76a8a5a6
task: added unique index for release plan templates (#8846)
We want to prevent our users from defining multiple templates with the
same name. So this adds a unique index on the name column when
discriminator is template.
2024-11-25 11:25:55 +01:00
Jaanus Sellin
4234020b8d
feat: backfill licensed users (#8791)
**This migration introduces a query that calculates the licensed user
counts and inserts them into the licensed_users table.**

**The logic ensures that:**

1. All users created up to a specific date are included as active users
until they are explicitly deleted.
2. Deleted users are excluded after their deletion date, except when
their deletion date falls within the last 30 days or before their
creation date.
3. The migration avoids duplicating data by ensuring records are only
inserted if they don’t already exist in the licensed_users table.


**Logic Breakdown:**

**Identify User Events (user_events):** Extracts email addresses from
user-related events (user-created and user-deleted) and tracks the type
and timestamp of the event. This step ensures the ability to
differentiate between user creation and deletion activities.
**Generate a Date Range (dates):** Creates a continuous range of dates
spanning from the earliest recorded event up to the current date. This
ensures we analyze every date, even those without events.
**Determine Active Users (active_emails):** Links dates with user events
to calculate the status of each email address (active or deleted) on a
given day. This step handles:

- The user's creation date.
- The user's deletion date (if applicable).

**Calculate Daily Active User Counts (result):** 
For each date, counts the distinct email addresses that are active based
on the conditions:

- The user has no deletion date.
- The user's deletion date is within the last 30 days relative to the
current date.
- The user's creation date is before the deletion date.
2024-11-20 09:10:07 +02:00
Thomas Heartman
82e752be45
1-3131: db migration to make potentially stale non-nullable (#8796)
This change adds a db migration to make the potentially_stale column
non-nullable. It'll set any NULL values to `false`.

In the down-migration, make the column nullable again.
2024-11-19 12:27:22 +01:00
Jaanus Sellin
ec9be77383
feat: licensed users migration table (#8748) 2024-11-14 10:59:29 +02:00
Jaanus Sellin
c8bc40146a
feat: email will be stored hashed now for all users (#8720)
Adding email_hash column to users table.
We will update all existing users to have hashed email. 
All new users will also get the hash.

We are fine to use md5, because we just need uniqueness. We have emails
in events table stored anyways, so it is not sensitive.
2024-11-12 13:28:19 +02:00
Christopher Kolstad
d417dda229
task: added migration for release plan template permissions (#8707)
Due to the cascade on the permission in role_permission, the down
migration does not need to remove the rows from role_permission.
2024-11-11 10:42:38 +01:00
Tymoteusz Czech
471cb796c9
migration(producitivty-report): cascade user unsubscription (#8655)
Remove opt-outs for deleted users. This is useful in tests, where we
delete users permanently.
2024-11-05 13:54:32 +01:00
David Leek
7f5d27302e
chore: add migration for release-plans-definitions that removes fk on users(id) (#8614) 2024-10-31 13:49:55 +01:00
Tymoteusz Czech
28f821cb34
feat(db): user email un-subscription (#8612)
Opt-out table for emails
2024-10-31 11:38:15 +00:00
David Leek
728df6825c
chore: add migration for milestone strategy segments (#8593) 2024-10-30 11:22:52 +01:00
Mateusz Kwasniewski
5662fe79f8
feat: emails sent table migration (#8528) 2024-10-25 09:53:52 +02:00
David Leek
fbd3f97ae0
chore: add migration for release plans (#8529) 2024-10-24 13:33:54 +02:00
Nuno Góis
3f8d4c3538
chore: update schemas related to Unleash AI chat (#8463)
https://linear.app/unleash/issue/2-2779/store-conversations-in-the-database

Updates schemas related to Unleash AI chat and renames the `chat` column
to `messages` to ensure everything aligns nicely.
2024-10-16 14:44:37 +01:00
Nuno Góis
b9ea6641ff
chore: AI chats db migration (#8460)
https://linear.app/unleash/issue/2-2845/db-migration-ai-chats

Adds a new DB migration for creating a new `ai_chats` table, used on the
Unleash AI experiment.
2024-10-16 10:43:52 +01:00
Christopher Kolstad
29b292f1ea
task: make count column bigint. (#8183)
We now have customers that exceed INT capacity, so we need to change
this to BIGINT in client_metrics_env_variants_daily as well.

Even heavy users only have about 10000 rows here, so should be a quick
enough operation.
2024-09-19 10:59:40 +02:00
Mateusz Kwasniewski
d220aaec0f
fix: editor can add dependencies in default project (#8077) 2024-09-04 11:25:32 +02:00
Jaanus Sellin
9eb80a8d48
chore: clear onboarding events (#8062)
Clearing onboarding tables, because the data is invalid and we want to
start tracking all of this for only new customers.
This migration must be applied after the new logic is implemented.
2024-09-03 16:27:11 +03:00
Jaanus Sellin
4079485338
feat: collect onboarding events in separate table (#8020) 2024-08-30 11:34:47 +03:00
Jaanus Sellin
3188f991f4
feat: start tracking user first login migration (#8006)
Start tracking user first login.
2024-08-28 16:27:09 +03:00
Thomas Heartman
9af42b3565
fix: add migration to normalize api token types (#7974)
Adds a migration to normalize api token types already in the database,
to remove any weird casing issues as currently demonstrated on sandbox


![image](https://github.com/user-attachments/assets/ad14db22-114d-4de2-b952-722df9ae84a4)

This is a companion piece to #7972
2024-08-23 13:29:49 +02:00
Jaanus Sellin
99e4a564d0
fix: fix events with no-project projects (#7951)
Fixes issue where `segment-created `events had fake project name
**no-project** attached.

In total for previous 4 months, all segments created that were global
segments, have this issue.


https://github.com/Unleash/unleash/pull/6872/files#diff-68dcd43b31d35a8a80c73bca1f2a9626b0234dd0b76920a6881b81fa04708268R135
2024-08-21 15:32:37 +03:00
Jaanus Sellin
624c6ce9c3
feat: events table type column index (#7838)
Adding index on even table type column, since we are running queries on
top of it.
2024-08-12 13:46:27 +03:00
Jaanus Sellin
ea057d1777
feat: add index on events created at (#7836)
After adding an index, the time for the new event search on 100k events
decreased from 5000ms to 4ms. This improvement is due to the query using
an index scan instead of a sequence scan.
2024-08-12 12:46:50 +03:00
Mateusz Kwasniewski
74de3ea72e
feat: archived at column in projects (#7782) 2024-08-07 10:00:37 +02:00
Nuno Góis
13d02685d8
chore: db migration for integration events (#7604)
https://linear.app/unleash/issue/2-2435/create-migration-for-a-new-integration-events-table

Adds a DB migration that creates the `integration_events` table:
 - `id`: Auto-incrementing primary key;
- `integration_id`: The id of the respective integration (i.e.
integration configuration);
 - `created_at`: Date of insertion;
- `state`: Integration event state, as text. Can be anything we'd like,
but I'm thinking this will be something like:
   - Success 
   - Failed 
   - SuccessWithErrors ⚠️
- `state_details`: Expands on the previous column with more details, as
text. Examples:
   - OK. Status code: 200
   - Status code: 429 - Rate limit reached
   - No access token provided
 - `event`: The whole event object, stored as a JSON blob;
- `details`: JSON blob with details about the integration execution.
Will depend on the integration itself, but for example:
   - Webhook: Request body
- Slack App: Message text and an array with all the channels we're
posting to

I think this gives us enough flexibility to cover all present and
(possibly) future integrations, but I'd like to hear your thoughts.

I'm also really torn on what to call this table:
- `integration_events`: Consistent with the feature name. Addons are now
called integrations, so this would be consistent with the new thing;
 - `addon_events`: Consistent with the existing `addons` table.
2024-07-17 10:02:04 +01:00
Christopher Kolstad
f65afff6c1
feat: Disallow repeating last 5 passwords. (#7552)
We'll store hashes for the last 5 passwords, fetch them all for the user
wanting to change their password, and make sure the password does not
verify against any of the 5 stored hashes.

Includes some password-related UI/UX improvements and refactors. Also
some fixes related to reset password rate limiting (instead of an
unhandled exception), and token expiration on error.

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2024-07-09 16:18:35 +02:00
Mateusz Kwasniewski
2a616c28bc
feat: adding full creator information to view used by feature read (#7356) 2024-06-11 14:19:32 +02:00
Jaanus Sellin
c4566baeac
chore: rename roles toggles to flag (#7123)
Running migration to update roles descriptions.
2024-05-23 12:01:04 +03:00