Skip to content
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

feat: add postgres support + migrations #628

Merged
merged 73 commits into from
Dec 16, 2024

Conversation

dr-carrot
Copy link
Contributor

@dr-carrot dr-carrot commented Jan 19, 2024

Description

Screenshot (if UI-related)

To-Dos

  • Successful build yarn build
  • Translation keys yarn i18n:extract
  • Database migration (if required)

Issues Fixed or Closed

TODO:

  • An extra migration in the develop branch
  • Translation keys?
  • Docs
  • Test image - drcarrot/jellyseerr-postgres:latest
  • Move new docs from readme to the newer docs page
  • Switch date column types to remove timezone It is generally recommended to use timestamp with timezone aka timestampz

@dr-carrot dr-carrot changed the title V1.7.0/postgresql feat: add postgres support + migrations Jan 19, 2024
@Fallenbagel
Copy link
Owner

Whats the difference between this and #421?

@dr-carrot
Copy link
Contributor Author

Whats the difference between this and #421?

This PR contains all the changes in #421 plus changes from @ralgar that are also mentioned in that PR. Additionally, this PR contains the migration script required to get postgres running, documentation on how to configure postgres, and improved ssl configuration options

gauthier-th
gauthier-th previously approved these changes Dec 4, 2024
Copy link
Collaborator

@gauthier-th gauthier-th left a comment

Choose a reason for hiding this comment

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

LGTM! Thanks for your contribution 😄

I'd like a few more people to test this before we merge this into develop, and especially to test with SQLite, because the database is at the core of the app and SQLite is what will be used by most of the users.
I just updated the preview tag: preview-postgres

@gauthier-th gauthier-th added the preview PRs deployed for testing with tag `:preview-prxx` label Dec 5, 2024
@gauthier-th
Copy link
Collaborator

Hey everyone, could a few of you test and give me feedback to make sure everything works fine on various setups?

@Gylesie
Copy link
Contributor

Gylesie commented Dec 12, 2024

I can test with sqlite initially for 3 days and another 3 days after migration to postgres.

Is there a manual migration step required to get data from sqlite into postgres? Do you have any command at hand to do it easily? I would appreciate a nudge how to switch to postgres, including where to put connection details.

@Gylesie
Copy link
Contributor

Gylesie commented Dec 12, 2024

On previous note, I think https://github.com/Fallenbagel/jellyseerr/blob/00e18a272a8842f0c3d59924f37967f9cbfb413e/docs/extending-jellyseerr/database-config.mdx got it all covered. I'll give it a try and report back after 6 days.

@Cheezzhead
Copy link

Cheezzhead commented Dec 12, 2024

I've moved (i.e. duplicated) my production jellyseerr to postgres, below the pgloader config I used and logs for the migration. I think most of the warnings/errors are false positives? Everything seems to be working fine so far but will continue monitoring in the coming days.

EDIT: I'm running on Ubuntu 20.04.6 with Docker (see below for extended docker version output).

jellyseerr.load:

load database
     from sqlite://db.sqlite3
     into postgresql://jellyseerr:%PASSWORD%@postgres:5432/jellyseerr
     WITH quote identifiers, data only
;

pgloader migration log:

2024-12-12T15:25:36.008000Z LOG pgloader version "3.6.7~devel"
2024-12-12T15:25:36.012000Z LOG Parsing commands from file #P"/workdir/jellyseerr.load"
2024-12-12T15:25:36.072000Z LOG Migrating from #<SQLITE-CONNECTION sqlite:///workdir/jellyseerr.sqlite3 {1006A7B823}>
2024-12-12T15:25:36.072000Z LOG Migrating into #<PGSQL-CONNECTION pgsql://jellyseerr@postgres:5432/jellyseerr {1006A7BA03}>
2024-12-12T15:25:36.188001Z WARNING Source column "public"."migrations"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."migrations"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."migrations"."\"name\"" is casted to type "text" which is not the same as "character varying", the type of current target database column "public"."migrations"."name".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season_request"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."season_request"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season_request"."\"seasonNumber\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."season_request"."seasonNumber".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season_request"."\"status\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."season_request"."status".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season_request"."\"requestId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."season_request"."requestId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."season"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season"."\"seasonNumber\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."season"."seasonNumber".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season"."\"status\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."season"."status".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season"."\"mediaId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."season"."mediaId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."season"."\"status4k\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."season"."status4k".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."media"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"tmdbId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."tmdbId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"tvdbId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."tvdbId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"status\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."status".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"status4k\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."status4k".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"serviceId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."serviceId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"serviceId4k\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."serviceId4k".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"externalServiceId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."externalServiceId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media"."\"externalServiceId4k\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media"."externalServiceId4k".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."user"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"plexId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user"."plexId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"permissions\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user"."permissions".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"userType\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user"."userType".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"movieQuotaLimit\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user"."movieQuotaLimit".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"movieQuotaDays\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user"."movieQuotaDays".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"tvQuotaLimit\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user"."tvQuotaLimit".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user"."\"tvQuotaDays\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user"."tvQuotaDays".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user_push_subscription"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."user_push_subscription"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user_push_subscription"."\"userId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user_push_subscription"."userId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."issue"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"issueType\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue"."issueType".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"status\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue"."status".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"problemSeason\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue"."problemSeason".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"problemEpisode\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue"."problemEpisode".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"mediaId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue"."mediaId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"createdById\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue"."createdById".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue"."\"modifiedById\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue"."modifiedById".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue_comment"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."issue_comment"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue_comment"."\"userId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue_comment"."userId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."issue_comment"."\"issueId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."issue_comment"."issueId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."media_request"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"status\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media_request"."status".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"mediaId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media_request"."mediaId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"requestedById\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media_request"."requestedById".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"modifiedById\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media_request"."modifiedById".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"serverId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media_request"."serverId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"profileId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media_request"."profileId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."media_request"."\"languageProfileId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."media_request"."languageProfileId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."discover_slider"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."discover_slider"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."discover_slider"."\"type\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."discover_slider"."type".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."discover_slider"."\"order\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."discover_slider"."order".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."watchlist"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."watchlist"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."watchlist"."\"tmdbId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."watchlist"."tmdbId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."watchlist"."\"requestedById\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."watchlist"."requestedById".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."watchlist"."\"mediaId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."watchlist"."mediaId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user_settings"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."user_settings"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user_settings"."\"userId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."user_settings"."userId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."user_settings"."\"pushoverSound\"" is casted to type "text" which is not the same as "character varying", the type of current target database column "public"."user_settings"."pushoverSound".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."blacklist"."\"id\"" is casted to type "bigserial" which is not the same as "integer", the type of current target database column "public"."blacklist"."id".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."blacklist"."\"mediaType\"" is casted to type "text" which is not the same as "character varying", the type of current target database column "public"."blacklist"."mediaType".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."blacklist"."\"title\"" is casted to type "text" which is not the same as "character varying", the type of current target database column "public"."blacklist"."title".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."blacklist"."\"tmdbId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."blacklist"."tmdbId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."blacklist"."\"userId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."blacklist"."userId".
2024-12-12T15:25:36.192001Z WARNING Source column "public"."blacklist"."\"mediaId\"" is casted to type "bigint" which is not the same as "integer", the type of current target database column "public"."blacklist"."mediaId".
2024-12-12T15:25:36.196001Z WARNING PostgreSQL warning: constraint "season_mediaId_fkey" of relation "season" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "user_push_subscription_userId_fkey" of relation "user_push_subscription" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "issue_modifiedById_fkey" of relation "issue" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "issue_createdById_fkey" of relation "issue" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "issue_mediaId_fkey" of relation "issue" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "issue_comment_issueId_fkey" of relation "issue_comment" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "issue_comment_userId_fkey" of relation "issue_comment" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "media_request_modifiedById_fkey" of relation "media_request" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "media_request_requestedById_fkey" of relation "media_request" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "media_request_mediaId_fkey" of relation "media_request" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "season_request_requestId_fkey" of relation "season_request" does not exist, skipping
2024-12-12T15:25:36.200001Z WARNING PostgreSQL warning: constraint "user_settings_userId_fkey" of relation "user_settings" does not exist, skipping
2024-12-12T15:25:36.240001Z ERROR Database error 23505: duplicate key value violates unique constraint "PK_8c82d7f526340ab734260ea46be"
DETAIL: Key (id)=(1) already exists.
CONTEXT: COPY migrations, line 1
2024-12-12T15:25:36.320001Z ERROR Database error 23505: duplicate key value violates unique constraint "idx_194779_discover_slider_pkey"
DETAIL: Key (id)=(1) already exists.
CONTEXT: COPY discover_slider, line 1
2024-12-12T15:25:36.408001Z LOG report summary reset
              table name     errors       rows      bytes      total time
------------------------  ---------  ---------  ---------  --------------
                   fetch          0          0                     0.000s
         fetch meta data          0         26                     0.032s
       Drop Foreign Keys          0         24                     0.008s
------------------------  ---------  ---------  ---------  --------------
            "migrations"          1          0                     0.024s
               "session"          0         73    14.1 kB          0.028s
        "season_request"          0         82     4.1 kB          0.060s
                 "media"          0       1515   218.4 kB          0.076s
"user_push_subscription"          0          9     2.8 kB          0.068s
         "issue_comment"          0          7     0.5 kB          0.088s
       "discover_slider"          1          0                     0.088s
         "user_settings"          0          6     0.3 kB          0.096s
                "season"          0       1100    58.6 kB          0.008s
                  "user"          0         24     4.9 kB          0.016s
                 "issue"          0          5     0.3 kB          0.036s
         "media_request"          0        236    18.6 kB          0.040s
             "watchlist"          0          8     0.6 kB          0.060s
             "blacklist"          0          2     0.1 kB          0.064s
------------------------  ---------  ---------  ---------  --------------
 COPY Threads Completion          0          4                     0.112s
         Reset Sequences          0         13                     0.036s
     Create Foreign Keys          0         12                     0.012s
        Install Comments          0          0                     0.000s
------------------------  ---------  ---------  ---------  --------------
       Total import time          2       3067   323.2 kB          0.160s

docker version output:

Client: Docker Engine - Community
 Version:           27.4.0
 API version:       1.47
 Go version:        go1.22.10
 Git commit:        bde2b89
 Built:             Sat Dec  7 10:38:58 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.4.0
  API version:      1.47 (minimum version 1.24)
  Go version:       go1.22.10
  Git commit:       92a8393
  Built:            Sat Dec  7 10:38:58 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.24
  GitCommit:        88bf19b2105c8b17560993bee28a01ddc2f97182
 runc:
  Version:          1.2.2
  GitCommit:        v1.2.2-0-g7cb3632
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

@Gylesie
Copy link
Contributor

Gylesie commented Dec 12, 2024

From the current :develop tag to this feature tag it failed with this SQLite error:

[info]: Commit Tag: 00e18a272a8842f0c3d59924f37967f9cbfb413e 
[info]: Starting Overseerr version develop-00e18a272a8842f0c3d59924f37967f9cbfb413e 
[debug][Settings Migrator]: Checking migration '0001_migrate_hostname.js'... 
[debug][Settings Migrator]: Checking migration '0002_migrate_apitokens.js'... 
[debug][Settings Migrator]: Checking migration '0003_emby_media_server_type.js'... 
[info][Notifications]: Registered notification agents 
[info][Jobs]: Scheduled jobs loaded 
[info][Server]: Server ready on port 5055 
[debug][Jobs]: Starting scheduled job: Download Sync 
[info][Jobs]: Starting scheduled job: Jellyfin Recently Added Scan 
[info][Jellyfin Sync]: Jellyfin Sync Starting {"sessionId":"xxxxxx"}
[error][Jellyfin Sync]: Sync interrupted {"errorMessage":"SQLITE_ERROR: no such column: User_settings.region"}

@gauthier-th
Copy link
Collaborator

@dr-carrot last fix I hope 🙏
We merged #993 a few days ago, this PR splits the region field into two discoverRegion and streamingRegion in the User entity, hence the error above.
Could you please rebase and fix it?

@gottsman
Copy link

gottsman commented Dec 15, 2024

On previous note, I think https://github.com/Fallenbagel/jellyseerr/blob/00e18a272a8842f0c3d59924f37967f9cbfb413e/docs/extending-jellyseerr/database-config.mdx got it all covered. I'll give it a try and report back after 6 days.

A clean install worked for me so I tried an existing migration. A question on the documentation... From the notes, it mentions using this command to import the data. What is the significance of "pgloader/pgloader.load" volume mount? Where would I find that file?

docker run --rm -v config/db.sqlite3:/db.sqlite3:ro -v pgloader/pgloader.load:/pgloader.load ghcr.io/ralgar/pgloader:pr-1531 pgloader --with "quote identifiers" --with "data only" /db.sqlite3 postgresql://{{DB_USER}}:{{DB_PASS}}@{{DB_HOST}}:{{DB_PORT}}/{{DB_NAME}}

Copy link
Collaborator

@gauthier-th gauthier-th left a comment

Choose a reason for hiding this comment

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

LGTM!
@Fallenbagel do you want to review before we merge this?

@gauthier-th gauthier-th merged commit 44a9221 into Fallenbagel:develop Dec 16, 2024
8 checks passed
@gauthier-th
Copy link
Collaborator

@dr-carrot thanks again for your contribution!

@gauthier-th
Copy link
Collaborator

@all-contributors please add @dr-carrot for code

Copy link
Contributor

@gauthier-th

I've put up a pull request to add @dr-carrot! 🎉

@Fallenbagel
Copy link
Owner

@all-contributors please add @dr-carrot for code

Copy link
Contributor

@Fallenbagel

I've put up a pull request to add @dr-carrot! 🎉

thibodelanghe pushed a commit to thibodelanghe/jellyseerr that referenced this pull request Dec 18, 2024
* chore(release): 1.4.0

* chore(release): 1.4.1

* chore(release): 1.5.0

* chore(release): 1.6.0

* chore(release): 1.7.0

* feat: support for postgresql

* test(pgsql): disable root certificate verification

* test(ci): temporarily change CI for local repo

* fix: don't use SQLite idiom when using PgSQL

* feat(db): add flag to toggle TLS for Postgres

* feat(postgres and migrations): added migrations for postgres & imporved ssl for postgres config

Fallenbagel#186

* fix: restored workflow actions

* fix: access order

* fix: added pushover sound migration tto initial migration

* fix: added option to log queries

* fix: issue with session migration

* chore: relocate pushover sound migration

* feat: added logging option to other datasources

* chore: small tweaks for the datasource. Added docs for db setup

* chore: cleanup logs

* fix: added default dates to postgres migration

* fix: removed psql specific relation checks

* chore: added some debug sanity checks

* chore: added some more debug sanity checks

* chore: added some more additional debug sanity checks

* chore: added some more+ additional debug sanity checks

* chore: mild log cleanup

* chore: more log cleanup

* chore: finish log cleanup

* fix: added not null to migration so typeorm doesn't delete ids

* chore: cleanup extra psql code

* fix: remove eager load

* docs: added documentation for migration to postgres

* docs: added database option to bug template

* feat: created docker-compose postgres file

* fix: updated ts schema to align with change to migration

* fix: switch timestamp to include timezone

* fix: fixed indentation in psql docker-compose

* fix: changed version to 0.1.0 to remove ui notification

* style: fixed prettier in docker-compose.pastgres.yaml

* chore: restored CHANGELOG.md

* chore: revverted ts commit

* fix: update pnpm lock with pg package

* chore(pnpm-lock.yaml): updated pnpm-lock

* docs: update docs to add psql set up info

* refactor: clean up code from cr comments

* feat: migrate blacklist

* fix: fix issue with cypress tests

* docs: update psql docs

* fix: fix psql issue in user page; fix tiny psql error when selecting by empty list

* fix: incorrect current date function

* fix: null contraint with mediaAddedAt; fix psql col type

* refactor: removed unnecessary import

* feat: add postgres migration for streaming region

---------

Co-authored-by: Fallenbagel <[email protected]>
Co-authored-by: semantic-release-bot <[email protected]>
Co-authored-by: zackhow <[email protected]>
Co-authored-by: Ryan Algar <[email protected]>
Co-authored-by: Ryan Algar <[email protected]>
gauthier-th added a commit that referenced this pull request Dec 21, 2024
PR #628 changed some fields to disallow null values, causing issues with some older SQLite database
having null values. This PR reverts this change.
gauthier-th added a commit that referenced this pull request Dec 22, 2024
PR #628 changed some fields to disallow null values, causing issues with some older SQLite database
having null values. This PR reverts this change.
@Fallenbagel
Copy link
Owner

🎉 This PR is included in version 2.2.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
preview PRs deployed for testing with tag `:preview-prxx` released
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature Request] Add support for external database connections