Skip to content

Commit

Permalink
V7 upgrade (#969)
Browse files Browse the repository at this point in the history
* chore(config,providers): remove deprecated config variable

* chore(database): remove old migration files

* chore(backend): update migrations to new major version

* feat(migrations): add new migration to track v7 upgrade

* chore(backend): change applied time for v6 main migrations

* fix(backend): show correct log

* build(frontend): update deps

* build(backend): upgrade deps

* feat(frontend): adjust to new remix APIs

* docs: add migration docs for v7

* fix(backend): set correct rust log level

* chore(providers): format file

* refactor(providers): use `Option::map`

* Revert "refactor(providers): use `Option::map`"

This reverts commit 3b52aa9.
  • Loading branch information
IgnisDa authored Aug 19, 2024
1 parent 1b8b982 commit 62d2b43
Show file tree
Hide file tree
Showing 41 changed files with 298 additions and 1,472 deletions.
18 changes: 9 additions & 9 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 14 additions & 10 deletions apps/backend/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ async fn main() -> Result<()> {
dotenvy::dotenv().ok();

if env::var("RUST_LOG").is_err() {
env::set_var("RUST_LOG", "ryot=info,sea_orm=info");
env::set_var("RUST_LOG", "backend=info,sea_orm=info");
}
init_tracing()?;

Expand Down Expand Up @@ -128,9 +128,9 @@ async fn main() -> Result<()> {
.await
.expect("Database connection failed");

if let Err(err) = migrate_from_v5(&db).await {
tracing::error!("Migration from v5 failed: {}", err);
bail!("There was an error migrating from v5.")
if let Err(err) = migrate_from_v6(&db).await {
tracing::error!("Migration from v6 failed: {}", err);
bail!("There was an error migrating from v6.")
}

if let Err(err) = Migrator::up(&db, None).await {
Expand Down Expand Up @@ -340,8 +340,8 @@ fn init_tracing() -> Result<()> {
Ok(())
}

// upgrade from v5 ONLY IF APPLICABLE
async fn migrate_from_v5(db: &DatabaseConnection) -> Result<()> {
// upgrade from v6 ONLY IF APPLICABLE
async fn migrate_from_v6(db: &DatabaseConnection) -> Result<()> {
db.execute_unprepared(
r#"
DO $$
Expand All @@ -352,17 +352,18 @@ BEGIN
) THEN
IF EXISTS (
SELECT 1 FROM seaql_migrations
WHERE version = 'm20240415_is_v5_migration'
WHERE version = 'm20240606_is_v6_migration'
) THEN
IF NOT EXISTS (
SELECT 1 FROM seaql_migrations
WHERE version = 'm20240608_definitely_final_v5_migration'
WHERE version = 'm20240817_is_last_v6_migration'
) THEN
RAISE EXCEPTION 'Final migration for v5 does not exist, upgrade aborted.';
RAISE EXCEPTION 'Final migration for v6 does not exist, upgrade aborted.';
END IF;
DELETE FROM seaql_migrations;
INSERT INTO seaql_migrations (version, applied_at) VALUES
('m20230409_create_extensions', 1684693316),
('m20230410_create_metadata', 1684693316),
('m20230413_create_person', 1684693316),
('m20230417_create_user', 1684693316),
Expand All @@ -380,7 +381,10 @@ BEGIN
('m20231017_create_user_to_entity', 1684693316),
('m20231219_create_metadata_relations', 1684693316),
('m20240509_create_user_to_collection', 1717207621),
('m20240531_create_queued_notification', 1717207621);
('m20240531_create_queued_notification', 1717207621),
('m20240607_create_integration', 1723854703),
('m20240712_create_notification_platform', 1723854703),
('m20240713_create_user_summary', 1723854703);
END IF;
END IF;
END $$;
Expand Down
2 changes: 2 additions & 0 deletions apps/frontend/app/lib/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { useQuery } from "@tanstack/react-query";
import Cookies from "js-cookie";
import type { FormEvent } from "react";
import { $path } from "remix-routes";
import invariant from "tiny-invariant";
import { useInterval } from "usehooks-ts";
import {
CurrentWorkoutKey,
Expand Down Expand Up @@ -119,6 +120,7 @@ export const useUserMetadataDetails = (metadataId?: string | null) => {
export const useDashboardLayoutData = () => {
const loaderData =
useRouteLoaderData<typeof dashboardLoader>("routes/_dashboard");
invariant(loaderData);
return loaderData;
};

Expand Down
1 change: 0 additions & 1 deletion apps/frontend/app/lib/utilities.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,6 @@ export const extendResponseHeaders = (
) => {
for (const [key, value] of headers.entries())
responseHeaders.append(key, value);
return responseHeaders;
};

export const isWorkoutActive = (request: Request) => {
Expand Down
9 changes: 5 additions & 4 deletions apps/frontend/app/root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import "@mantine/notifications/styles.css";
import {
type LinksFunction,
type MetaFunction,
unstable_data,
unstable_defineLoader,
} from "@remix-run/node";
import {
Expand Down Expand Up @@ -91,15 +92,15 @@ export const links: LinksFunction = () => {
];
};

export const loader = unstable_defineLoader(async ({ request, response }) => {
export const loader = unstable_defineLoader(async ({ request }) => {
const { toast, headers: toastHeaders } = await getToast(request);
const colorScheme = await colorSchemeCookie.parse(
request.headers.get("cookie") || "",
);
const headers = new Headers();
const defaultColorScheme = colorScheme || "light";
if (toastHeaders)
response.headers = extendResponseHeaders(response.headers, toastHeaders);
return { toast, defaultColorScheme };
if (toastHeaders) extendResponseHeaders(headers, toastHeaders);
return unstable_data({ toast, defaultColorScheme }, { headers });
});

const DefaultHeadTags = () => {
Expand Down
45 changes: 22 additions & 23 deletions apps/frontend/app/routes/actions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,16 @@ import {

export const loader = async () => redirect($path("/"));

export const action = unstable_defineAction(async ({ request, response }) => {
export const action = unstable_defineAction(async ({ request }) => {
const formData = await request.clone().formData();
const url = new URL(request.url);
const intent = url.searchParams.get("intent") as string;
invariant(intent);
const redirectToForm = formData.get(redirectToQueryParam);
let redirectTo = redirectToForm ? redirectToForm.toString() : undefined;
let returnData = {};
const headers = new Headers();
let status = undefined;
await match(intent)
.with("commitMedia", async () => {
const submission = processSubmission(formData, commitMediaSchema);
Expand Down Expand Up @@ -121,17 +123,14 @@ export const action = unstable_defineAction(async ({ request, response }) => {
request.headers.get("cookie") || "",
);
const newColorScheme = currentColorScheme === "dark" ? "light" : "dark";
response.headers.append(
headers.append(
"set-cookie",
await colorSchemeCookie.serialize(newColorScheme),
);
})
.with("logout", async () => {
redirectTo = $path("/auth");
response.headers = extendResponseHeaders(
response.headers,
getLogoutCookies(),
);
extendResponseHeaders(headers, getLogoutCookies());
})
.with("createReviewComment", async () => {
const submission = processSubmission(formData, reviewCommentSchema);
Expand All @@ -140,8 +139,8 @@ export const action = unstable_defineAction(async ({ request, response }) => {
CreateReviewCommentDocument,
{ input: submission },
);
response.headers = extendResponseHeaders(
response.headers,
extendResponseHeaders(
headers,
await createToastHeaders({
message:
submission.incrementLikes || submission.decrementLikes
Expand Down Expand Up @@ -173,8 +172,8 @@ export const action = unstable_defineAction(async ({ request, response }) => {
},
);
}
response.headers = extendResponseHeaders(
response.headers,
extendResponseHeaders(
headers,
await createToastHeaders({
message: "Media added to collection successfully",
type: "success",
Expand Down Expand Up @@ -206,8 +205,8 @@ export const action = unstable_defineAction(async ({ request, response }) => {
DeleteReviewDocument,
{ reviewId: submission.reviewId },
);
response.headers = extendResponseHeaders(
response.headers,
extendResponseHeaders(
headers,
await createToastHeaders({
message: "Review deleted successfully",
type: "success",
Expand All @@ -219,8 +218,8 @@ export const action = unstable_defineAction(async ({ request, response }) => {
PostReviewDocument,
{ input: submission },
);
response.headers = extendResponseHeaders(
response.headers,
extendResponseHeaders(
headers,
await createToastHeaders({
message: "Review submitted successfully",
type: "success",
Expand Down Expand Up @@ -372,8 +371,8 @@ export const action = unstable_defineAction(async ({ request, response }) => {
);
await sleepForHalfSecond(request);
await removeCachedUserCollectionsList(request);
response.headers = extendResponseHeaders(
response.headers,
extendResponseHeaders(
headers,
await createToastHeaders({
type: !deployBulkProgressUpdate ? "error" : "success",
message: !deployBulkProgressUpdate
Expand All @@ -392,8 +391,8 @@ export const action = unstable_defineAction(async ({ request, response }) => {
);
await sleepForHalfSecond(request);
await removeCachedUserCollectionsList(request);
response.headers = extendResponseHeaders(
response.headers,
extendResponseHeaders(
headers,
await createToastHeaders({
message: "Progress updated successfully",
type: "success",
Expand All @@ -412,8 +411,8 @@ export const action = unstable_defineAction(async ({ request, response }) => {
CreateUserMeasurementDocument,
{ input },
);
response.headers = extendResponseHeaders(
response.headers,
extendResponseHeaders(
headers,
await createToastHeaders({
type: "success",
message: "Measurement submitted successfully",
Expand All @@ -422,10 +421,10 @@ export const action = unstable_defineAction(async ({ request, response }) => {
})
.run();
if (redirectTo) {
response.headers.append("Location", redirectTo.toString());
response.status = 302;
headers.append("Location", redirectTo.toString());
status = 302;
}
return Response.json(returnData);
return Response.json(returnData, { headers, status });
});

const commitMediaSchema = z.object({
Expand Down
46 changes: 23 additions & 23 deletions apps/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,22 @@
"@formkit/auto-animate": "0.8.2",
"@hello-pangea/dnd": "16.6.0",
"@lukemorales/query-key-factory": "1.3.4",
"@mantine/carousel": "7.11.2",
"@mantine/charts": "7.11.2",
"@mantine/core": "7.11.2",
"@mantine/dates": "7.11.2",
"@mantine/form": "7.11.2",
"@mantine/hooks": "7.11.2",
"@mantine/notifications": "7.11.2",
"@remix-run/node": "2.10.3",
"@remix-run/react": "2.10.3",
"@remix-run/serve": "2.10.3",
"@mantine/carousel": "7.12.1",
"@mantine/charts": "7.12.1",
"@mantine/core": "7.12.1",
"@mantine/dates": "7.12.1",
"@mantine/form": "7.12.1",
"@mantine/hooks": "7.12.1",
"@mantine/notifications": "7.12.1",
"@remix-run/node": "2.11.2",
"@remix-run/react": "2.11.2",
"@remix-run/serve": "2.11.2",
"@ryot/generated": "workspace:*",
"@ryot/graphql": "workspace:*",
"@ryot/ts-utils": "workspace:*",
"@tabler/icons-react": "3.11.0",
"@tanstack/react-query": "5.51.16",
"@tanstack/react-query-devtools": "5.51.16",
"@tabler/icons-react": "3.12.0",
"@tanstack/react-query": "5.51.23",
"@tanstack/react-query-devtools": "5.51.23",
"buffer": "6.0.3",
"clsx": "2.1.1",
"cookie": "0.6.0",
Expand All @@ -39,20 +39,20 @@
"howler": "2.2.4",
"humanize-duration-ts": "2.1.1",
"immer": "10.1.1",
"isbot": "5.1.13",
"jotai": "2.9.1",
"isbot": "5.1.16",
"jotai": "2.9.3",
"js-cookie": "3.0.5",
"mantine-datatable": "7.11.3",
"react": "18.3.1",
"react-confirm": "0.3.0-7",
"react-dom": "18.3.1",
"react-virtuoso": "4.9.0",
"react-virtuoso": "4.10.1",
"react-webcam": "7.2.0",
"recharts": "2.12.7",
"remix-routes": "1.7.6",
"remix-routes": "1.7.7",
"remix-utils": "7.6.0",
"tiny-invariant": "1.3.3",
"ts-pattern": "5.2.0",
"ts-pattern": "5.3.1",
"ufo": "1.5.4",
"usehooks-ts": "3.1.0",
"uuid": "10.0.0",
Expand All @@ -61,23 +61,23 @@
},
"devDependencies": {
"@bitprojects/umami-logger-typescript": "1.0.10",
"@remix-run/dev": "2.10.3",
"@remix-run/dev": "2.11.2",
"@types/cookie": "0.6.0",
"@types/crypto-js": "4.2.2",
"@types/howler": "2.2.11",
"@types/js-cookie": "3.0.6",
"@types/react": "18.3.3",
"@types/react-dom": "18.3.0",
"@types/uuid": "10.0.0",
"postcss": "8.4.40",
"postcss": "8.4.41",
"postcss-preset-mantine": "1.17.0",
"postcss-simple-vars": "7.0.1",
"ts-essentials": "10.0.1",
"ts-essentials": "10.0.2",
"typescript": "5.5.4",
"typescript-plugin-css-modules": "5.1.0",
"typescript-remix-routes-plugin": "1.0.1",
"vite": "5.3.5",
"vite-tsconfig-paths": "4.3.2"
"vite": "5.4.1",
"vite-tsconfig-paths": "5.0.1"
},
"engines": {
"node": ">=18.0.0"
Expand Down
Loading

0 comments on commit 62d2b43

Please sign in to comment.