+
+
+ `;
+
+ console.log("Sending email to:", user.email);
+
+ await sendEmail(user.email, "🎬 Bienvenue sur Freetube - Vérifiez votre email", textMessage, htmlMessage);
+
+ // Store the token in the database
+ const expirationDate = new Date();
+ expirationDate.setHours(expirationDate.getHours() + 1); // Token expires in 1 hour
+
+ const insertQuery = `INSERT INTO email_verification (email, token, expires_at) VALUES ($1, $2, $3)`;
+ await client.query(insertQuery, [user.email, token, expirationDate]);
+ client.end();
+
console.log("Successfully registered");
client.end();
logger.write("successfully registered", 200);
@@ -51,7 +131,42 @@ export async function register(req, res) {
console.log(err);
}
+}
+
+export async function verifyEmail(req, res) {
+ const { email, token } = req.body;
+
+ const logger = req.body.logger;
+ logger.action("try to verify email for " + email + " with token " + token);
+ const client = await getClient();
+
+ try {
+ const query = `SELECT * FROM email_verification WHERE email = $1 AND token = $2`;
+ const result = await client.query(query, [email, token]);
+
+ if (result.rows.length === 0) {
+ logger.write("failed to verify email for " + email, 404);
+ return res.status(404).json({ error: "Invalid token or email" });
+ }
+
+ // If we reach this point, the email is verified
+
+ const queryDelete = `DELETE FROM email_verification WHERE email = $1`;
+ await client.query(queryDelete, [email]);
+
+ const updateQuery = `UPDATE users SET is_verified = TRUE WHERE email = $1`;
+ await client.query(updateQuery, [email]);
+
+ logger.write("successfully verified email for " + email, 200);
+ res.status(200).json({ message: "Email verified successfully" });
+ } catch (error) {
+ console.error("Error verifying email:", error);
+ logger.write("failed to verify email for " + email, 500);
+ res.status(500).json({ error: "Internal server error" });
+ } finally {
+ client.end();
+ }
}
export async function login(req, res) {
diff --git a/backend/app/routes/user.route.js b/backend/app/routes/user.route.js
index 814cd37..bb2e095 100644
--- a/backend/app/routes/user.route.js
+++ b/backend/app/routes/user.route.js
@@ -7,7 +7,8 @@ import {
update,
deleteUser,
getChannel, getHistory,
- isSubscribed
+ isSubscribed,
+ verifyEmail
} from "../controllers/user.controller.js";
import {
UserRegister,
@@ -54,4 +55,7 @@ router.get("/:id/history", [addLogger, isTokenValid, User.id, validator], getHis
// CHECK IF SUBSCRIBED TO CHANNEL
router.get("/:id/channel/subscribed", [addLogger, isTokenValid, User.id, Channel.id, validator], isSubscribed)
+// VERIFY EMAIL
+router.post("/verify-email", [addLogger, validator], verifyEmail);
+
export default router;
\ No newline at end of file
diff --git a/backend/app/utils/database.js b/backend/app/utils/database.js
index 323777c..57ce344 100644
--- a/backend/app/utils/database.js
+++ b/backend/app/utils/database.js
@@ -23,7 +23,8 @@ export async function initDb() {
email VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
- picture VARCHAR(255)
+ picture VARCHAR(255),
+ is_verified BOOLEAN NOT NULL DEFAULT FALSE
);`;
await client.query(query);
@@ -31,7 +32,7 @@ export async function initDb() {
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
- owner INTEGER NOT NULL REFERENCES users(id)
+ owner INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE
)`
await client.query(query);
@@ -40,7 +41,7 @@ export async function initDb() {
title VARCHAR(255) NOT NULL,
thumbnail VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
- channel INTEGER NOT NULL REFERENCES channels(id),
+ channel INTEGER NOT NULL REFERENCES channels(id) ON DELETE CASCADE,
visibility VARCHAR(50) NOT NULL DEFAULT 'public',
file VARCHAR(255) NOT NULL,
slug VARCHAR(255) NOT NULL,
@@ -53,16 +54,16 @@ export async function initDb() {
(
id SERIAL PRIMARY KEY,
content TEXT NOT NULL,
- author INTEGER NOT NULL REFERENCES users(id),
- video INTEGER NOT NULL REFERENCES videos(id),
+ author INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
+ video INTEGER NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
)`;
await client.query(query);
query = `CREATE TABLE IF NOT EXISTS likes (
id SERIAL PRIMARY KEY,
- owner INTEGER NOT NULL REFERENCES users(id),
- video INTEGER NOT NULL REFERENCES videos(id),
+ owner INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
+ video INTEGER NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);`;
await client.query(query);
@@ -70,21 +71,21 @@ export async function initDb() {
query = `CREATE TABLE IF NOT EXISTS playlists (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
- owner INTEGER NOT NULL REFERENCES users(id)
+ owner INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE
)`;
await client.query(query);
query = `CREATE TABLE IF NOT EXISTS playlist_elements (
id SERIAL PRIMARY KEY,
- video INTEGER NOT NULL REFERENCES videos(id),
- playlist INTEGER NOT NULL REFERENCES playlists(id)
+ video INTEGER NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
+ playlist INTEGER NOT NULL REFERENCES playlists(id) ON DELETE CASCADE
)`;
await client.query(query);
query = `CREATE TABLE IF NOT EXISTS subscriptions (
id SERIAL PRIMARY KEY,
- channel INTEGER NOT NULL REFERENCES channels(id),
- owner INTEGER NOT NULL REFERENCES users(id)
+ channel INTEGER NOT NULL REFERENCES channels(id) ON DELETE CASCADE,
+ owner INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE
)`;
await client.query(query);
@@ -96,19 +97,28 @@ export async function initDb() {
await client.query(query);
query = `CREATE TABLE IF NOT EXISTS video_tags (
- video INTEGER NOT NULL REFERENCES videos(id),
- tag INTEGER NOT NULL REFERENCES tags(id)
+ video INTEGER NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
+ tag INTEGER NOT NULL REFERENCES tags(id) ON DELETE CASCADE
)`
await client.query(query);
query = `CREATE TABLE IF NOT EXISTS history (
id SERIAL PRIMARY KEY,
- user_id INTEGER NOT NULL REFERENCES users(id),
- video INTEGER NOT NULL REFERENCES videos(id),
+ user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
+ video INTEGER NOT NULL REFERENCES videos(id) ON DELETE CASCADE,
viewed_at TIMESTAMP NOT NULL DEFAULT NOW()
)`;
await client.query(query);
+ query = `CREATE TABLE IF NOT EXISTS email_verification (
+ id SERIAL PRIMARY KEY,
+ email VARCHAR(255) NOT NULL,
+ token VARCHAR(255) NOT NULL,
+ created_at TIMESTAMP NOT NULL DEFAULT NOW(),
+ expires_at TIMESTAMP NOT NULL
+ )`;
+ await client.query(query);
+
} catch (e) {
console.error("Error initializing database:", e);
}
diff --git a/backend/app/utils/mail.js b/backend/app/utils/mail.js
new file mode 100644
index 0000000..9fb04c1
--- /dev/null
+++ b/backend/app/utils/mail.js
@@ -0,0 +1,30 @@
+import nodemailer from "nodemailer";
+
+function getTransporter() {
+ return nodemailer.createTransport({
+ host: "smtp.gmail.com",
+ port: 587,
+ secure: false,
+ auth: {
+ user: process.env.GMAIL_USER,
+ pass: "yuuu kvoi ytrf blla",
+ },
+ });
+};
+
+export function sendEmail(to, subject, text, html = null) {
+ const transporter = getTransporter();
+ const mailOptions = {
+ from: process.env.GMAIL_USER,
+ to,
+ subject,
+ text,
+ };
+
+ // Add HTML if provided
+ if (html) {
+ mailOptions.html = html;
+ }
+
+ return transporter.sendMail(mailOptions);
+}
diff --git a/backend/logs/access.log b/backend/logs/access.log
index 47212eb..c893ed1 100644
--- a/backend/logs/access.log
+++ b/backend/logs/access.log
@@ -5490,3 +5490,1940 @@
[2025-08-14 13:42:45.808] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
[2025-08-14 13:42:45.822] [undefined] GET(/:id/views): try to add views for video 3
[2025-08-14 13:42:45.830] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-14 20:15:10.659] [undefined] GET(/:id): try to get video 3
+[2025-08-14 20:15:10.669] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-14 20:15:10.682] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-14 20:15:10.697] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-14 20:15:10.720] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-14 20:15:10.731] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-14 20:15:13.199] [undefined] GET(/:id/channel): try to retrieve channel of user 5
+[2025-08-14 20:15:13.203] [undefined] GET(/:id/channel): successfully retrieved channel of user 5 with status 200
+[2025-08-14 20:15:13.207] [undefined] GET(/:id/history): try to retrieve history of user 5
+[2025-08-14 20:15:13.210] [undefined] GET(/:id/history): successfully retrieved history of user 5 with status 200
+[2025-08-14 20:15:13.218] [undefined] GET(/user/:id): Playlists retrieved for user with id 5 with status 200
+[2025-08-14 20:15:14.337] [undefined] GET(/:id): try to get channel with id 4
+[2025-08-14 20:15:14.346] [undefined] GET(/:id/stats): try to get stats
+[2025-08-14 20:15:14.350] [undefined] GET(/:id): Successfully get channel with id 4 with status 200
+[2025-08-14 20:15:14.357] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-14 20:15:19.739] [undefined] GET(/:id): try to get channel with id 4
+[2025-08-14 20:15:19.749] [undefined] GET(/:id/stats): try to get stats
+[2025-08-14 20:15:19.752] [undefined] GET(/:id): Successfully get channel with id 4 with status 200
+[2025-08-14 20:15:19.759] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-14 20:15:21.113] [undefined] GET(/:id/channel): try to retrieve channel of user 5
+[2025-08-14 20:15:21.116] [undefined] GET(/:id/channel): successfully retrieved channel of user 5 with status 200
+[2025-08-14 20:15:22.600] [undefined] PUT(/:id): try to update channel with id 4
+[2025-08-14 20:15:22.605] [undefined] PUT(/:id): Successfully updated channel with status 200
+[2025-08-14 20:15:26.948] [undefined] GET(/:id): try to get video 1
+[2025-08-14 20:15:26.959] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-14 20:15:26.970] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-14 20:15:26.984] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-14 20:15:27.021] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-14 20:15:27.031] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-14 20:16:02.804] [undefined] GET(/:id): try to get video 3
+[2025-08-14 20:16:02.814] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-14 20:16:02.840] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-14 20:16:02.857] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-14 20:16:02.890] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-14 20:16:02.897] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-14 20:16:04.968] [undefined] GET(/:id/channel): try to retrieve channel of user 5
+[2025-08-14 20:16:04.971] [undefined] GET(/:id/channel): successfully retrieved channel of user 5 with status 200
+[2025-08-14 20:16:04.974] [undefined] GET(/:id/history): try to retrieve history of user 5
+[2025-08-14 20:16:04.978] [undefined] GET(/:id/history): successfully retrieved history of user 5 with status 200
+[2025-08-14 20:16:04.984] [undefined] GET(/user/:id): Playlists retrieved for user with id 5 with status 200
+[2025-08-14 20:16:05.581] [undefined] GET(/:id): try to get channel with id 4
+[2025-08-14 20:16:05.590] [undefined] GET(/:id/stats): try to get stats
+[2025-08-14 20:16:05.593] [undefined] GET(/:id): Successfully get channel with id 4 with status 200
+[2025-08-14 20:16:05.601] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-14 20:16:09.229] [undefined] PUT(/:id): try to update channel with id 4
+[2025-08-14 20:16:09.234] [undefined] PUT(/:id): Successfully updated channel with status 200
+[2025-08-14 20:19:48.593] [undefined] POST(/login): try to login with username 'sacha2'
+[2025-08-14 20:19:48.645] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-14 20:19:50.397] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:19:50.401] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:19:50.404] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:19:50.409] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:19:50.416] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:19:52.573] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-14 20:19:52.582] [undefined] GET(/:id/stats): try to get stats
+[2025-08-14 20:19:52.586] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-14 20:19:52.596] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-14 20:19:57.515] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:19:57.518] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:19:59.762] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-14 20:19:59.773] [undefined] GET(/:id/stats): try to get stats
+[2025-08-14 20:19:59.777] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-14 20:19:59.785] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-14 20:20:00.371] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:20:00.375] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:20:00.377] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:20:00.382] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:20:00.389] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:23:01.532] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:23:01.536] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:23:01.538] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:23:01.544] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:23:01.551] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:31:39.192] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:31:39.195] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:31:39.198] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:31:39.204] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:31:39.211] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:31:53.915] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:31:53.918] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:31:53.942] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:31:53.947] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:31:53.956] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:31:56.423] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:31:56.426] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:31:56.428] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:31:56.434] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:31:56.442] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:32:02.387] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:32:02.390] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:32:02.393] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:32:02.399] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:32:02.406] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:32:11.988] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:32:11.992] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:32:11.994] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:32:11.999] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:32:12.007] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:32:12.840] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-14 20:32:12.850] [undefined] GET(/:id/stats): try to get stats
+[2025-08-14 20:32:12.854] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-14 20:32:12.862] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-14 20:32:13.944] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-14 20:32:13.947] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-14 20:32:13.950] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-14 20:32:13.953] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-14 20:32:13.961] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-14 20:32:50.173] [undefined] POST(/): try to register a user with username: test4 and email: test4@gmail.com
+[2025-08-14 20:32:50.223] [undefined] POST(/): successfully registered with status 200
+[2025-08-14 20:32:50.230] [undefined] POST(/login): try to login with username 'test4'
+[2025-08-14 20:32:50.281] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-14 20:32:51.673] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:32:51.677] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:32:51.679] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:32:51.682] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:32:51.691] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:33:07.906] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:33:07.909] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:33:07.911] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:33:07.914] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:33:07.924] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:33:16.345] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:33:16.348] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:33:16.351] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:33:16.354] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:33:16.363] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:34:21.620] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:34:21.624] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:34:21.627] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:34:21.631] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:34:21.639] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:34:36.364] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:34:36.367] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:34:36.369] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:34:36.372] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:34:36.381] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:34:55.418] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:34:55.422] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:34:55.425] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:34:55.428] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:34:55.436] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:35:04.997] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:35:05.000] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:35:05.004] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:35:05.008] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:35:05.015] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:36:01.767] [undefined] PUT(/:id): try to update user 6
+[2025-08-14 20:36:01.772] [undefined] PUT(/:id): successfully updated user 6 with status 200
+[2025-08-14 20:36:03.230] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:36:03.233] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:36:03.236] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:36:03.239] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:36:03.248] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:41:31.791] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:41:31.794] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:41:31.797] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:41:31.800] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:41:31.808] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:41:50.529] [undefined] GET(/:id/channel): try to retrieve channel of user 6
+[2025-08-14 20:41:50.532] [undefined] GET(/:id/history): try to retrieve history of user 6
+[2025-08-14 20:41:50.535] [undefined] GET(/:id/channel): failed to retrieve channel of user 6 because it doesn't exist with status 404
+[2025-08-14 20:41:50.539] [undefined] GET(/:id/history): failed to retrieve history of user 6 because it doesn't exist with status 404
+[2025-08-14 20:41:50.550] [undefined] GET(/user/:id): Playlists retrieved for user with id 6 with status 200
+[2025-08-14 20:41:53.692] [undefined] POST(/): Playlist created with id 7 with status 200
+[2025-08-15 07:15:46.354] [undefined] POST(/login): try to login with username 'sacha2'
+[2025-08-15 07:15:46.413] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-15 07:16:04.703] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:16:04.706] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:16:04.709] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:16:04.714] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:16:04.722] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:16:25.767] [undefined] POST(/): Playlist created with id 8 with status 200
+[2025-08-15 07:16:26.987] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:16:26.989] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:16:26.991] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:16:26.995] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:16:27.006] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:17:15.294] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:17:15.298] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:17:15.322] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:17:15.327] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:17:15.333] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:17:22.303] [undefined] POST(/): Playlist created with id 9 with status 200
+[2025-08-15 07:17:22.321] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:17:41.905] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:17:41.908] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:17:41.916] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:17:41.921] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:17:41.927] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:17:43.230] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:17:43.233] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:17:43.258] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:17:43.261] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:17:43.269] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:17:44.606] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:17:44.609] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:17:44.612] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:17:44.616] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:17:44.623] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:17:45.539] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:17:45.543] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:17:45.545] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:17:45.549] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:17:45.556] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:18:53.759] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:18:53.769] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:18:53.782] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:18:53.794] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:18:53.821] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:18:53.832] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:19:35.214] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:19:35.225] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:19:35.238] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:19:35.251] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:19:35.273] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:19:35.284] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:19:46.027] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:19:46.037] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:19:46.050] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:19:46.068] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:19:46.093] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:19:46.101] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:21:30.310] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:21:30.320] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:21:30.333] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:21:30.348] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:21:30.386] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:21:30.395] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:21:32.380] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:21:32.390] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:21:32.403] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:21:32.418] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:21:32.441] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:21:32.449] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:21:43.838] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:21:43.848] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:21:43.860] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:21:43.876] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:21:43.916] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:21:43.925] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:22:08.679] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:22:08.689] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:22:08.701] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:22:08.716] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:22:08.747] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:22:08.757] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:22:21.736] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:22:21.747] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:22:21.762] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:22:21.777] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:22:21.802] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:22:21.811] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:22:43.624] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:22:43.634] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:22:43.647] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:22:43.662] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:22:43.692] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:22:43.703] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:23:56.553] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:23:56.564] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:23:56.577] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:23:56.591] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:23:56.613] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:23:56.622] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:26:28.747] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:26:28.757] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:26:28.770] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:26:28.798] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:26:28.834] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:26:28.843] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:26:36.036] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:26:36.047] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:26:36.063] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:26:36.075] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:26:36.122] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:26:36.132] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:27:02.346] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:27:02.357] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:27:02.360] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:27:02.374] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:27:02.385] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:27:02.417] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:27:02.428] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:28:53.335] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:28:53.346] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:28:53.351] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:28:53.366] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:28:53.382] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:28:53.407] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:28:53.415] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:29:06.301] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:29:06.311] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:29:06.315] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:29:06.327] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:29:06.341] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:29:06.370] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:29:06.380] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:29:14.077] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:29:14.088] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:29:14.092] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:29:14.109] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:29:14.124] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:29:14.156] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:29:14.165] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:29:23.599] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:29:23.610] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:29:23.614] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:29:23.630] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:29:23.643] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:29:23.669] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:29:23.677] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:29:34.032] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:29:34.042] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:29:34.047] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:29:34.061] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:29:34.075] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:29:34.117] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:29:34.127] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:29:46.216] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:29:46.227] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:29:46.232] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:29:46.251] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:29:46.265] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:29:46.287] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:29:46.297] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:30:08.411] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:30:08.421] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:30:08.425] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:30:08.438] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:30:08.451] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:30:08.495] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:30:08.504] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:30:17.869] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:30:17.880] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:30:17.899] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:30:17.911] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:30:17.926] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:30:17.956] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:30:17.966] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:30:49.412] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:30:49.422] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:30:49.427] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:30:49.438] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:30:49.453] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:30:49.477] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:30:49.493] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:31:32.628] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:31:32.640] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:31:32.645] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:31:32.659] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:31:32.674] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:31:32.704] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:31:32.713] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:32:10.030] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:32:10.041] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:32:10.045] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:32:10.057] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:32:10.070] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:32:10.105] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:32:10.115] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:32:30.091] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:32:30.102] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:32:30.927] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:32:39.410] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:32:39.424] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:32:39.432] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:32:39.447] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:32:39.465] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:32:39.492] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:32:39.502] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:33:07.385] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:33:07.396] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:33:07.401] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:33:07.417] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:33:07.431] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:33:07.470] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:33:07.480] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:33:20.298] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:33:20.309] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:33:20.315] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:33:20.332] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:33:20.350] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:33:20.373] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:33:20.383] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:33:27.995] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:33:28.007] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:33:28.012] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:33:28.026] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:33:28.042] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:33:28.076] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:33:28.086] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:33:33.605] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:33:33.615] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:33:33.620] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:33:33.631] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:33:33.646] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:33:33.677] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:33:33.689] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:33:47.482] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:33:47.493] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:33:47.497] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:33:47.511] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:33:47.527] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:33:47.551] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:33:47.559] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:33:53.695] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:33:53.707] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:33:53.724] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:33:53.737] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:33:53.751] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:33:53.780] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:33:53.791] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:33:57.653] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:33:57.665] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:33:57.670] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:33:57.683] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:33:57.700] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:33:57.725] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:33:57.733] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:34:08.528] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:34:08.538] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:34:08.543] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:34:08.556] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:34:08.569] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:34:08.616] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:34:08.625] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:35:58.474] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:35:58.485] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:35:58.490] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:35:58.504] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:35:58.522] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:35:58.544] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:35:58.553] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:36:12.736] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:36:12.747] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:36:12.752] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:36:12.764] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:36:12.778] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:36:12.799] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:36:12.809] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:36:23.117] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:36:23.128] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:36:23.133] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:36:23.145] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:36:23.160] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:36:23.192] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:36:23.202] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:36:35.456] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:36:35.467] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:36:35.472] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:36:35.486] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:36:35.501] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:36:35.545] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:36:35.554] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:38:52.975] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:38:52.987] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:38:52.993] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:38:53.007] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:38:53.022] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:38:53.053] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:38:53.066] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:39:16.059] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:39:16.071] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:39:16.077] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:39:16.091] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:39:16.105] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:39:16.149] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:39:16.160] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:39:34.058] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:39:34.069] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:39:34.073] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:39:34.088] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:39:34.105] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:39:34.130] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:39:34.141] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:40:05.198] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:40:05.209] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:40:05.213] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:40:05.227] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:40:05.244] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:40:05.279] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:40:05.289] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:40:22.330] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:40:22.342] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:40:22.347] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:40:22.361] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:40:22.376] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:40:22.400] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:40:22.409] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:43:58.684] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:43:58.695] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:43:58.699] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:43:58.713] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:43:58.728] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:43:58.771] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:43:58.781] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:44:11.725] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:44:11.737] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:44:11.742] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:44:11.762] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:44:11.775] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:44:11.810] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:44:11.819] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:44:33.503] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:44:33.515] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:44:33.520] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:44:33.542] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:44:33.557] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:44:33.628] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:44:33.640] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:45:01.108] [undefined] GET(/:id): try to get video 3
+[2025-08-15 07:45:01.118] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:45:01.123] [undefined] GET(/:id): successfully get video 3 with status 200
+[2025-08-15 07:45:01.140] [undefined] GET(/:id/similar): try to get similar videos for video 3
+[2025-08-15 07:45:01.153] [undefined] GET(/:id/similar): successfully get similar videos for video 3 with status 200
+[2025-08-15 07:45:01.185] [undefined] GET(/:id/views): try to add views for video 3
+[2025-08-15 07:45:01.194] [undefined] GET(/:id/views): successfully added views for video 3 with status 200
+[2025-08-15 07:45:03.398] [undefined] POST(/:id): Video added to playlist with id 2 with status 200
+[2025-08-15 07:45:12.544] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:45:12.548] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:45:12.551] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:45:12.554] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:45:12.561] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:45:18.685] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:45:18.688] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:45:18.691] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:45:18.695] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:45:18.703] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:46:57.187] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 07:46:57.191] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 07:46:57.195] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 07:46:57.201] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 07:46:57.207] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:53:09.712] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 07:57:29.629] [undefined] GET(/:id): try to get video 10
+[2025-08-15 07:57:29.640] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 07:57:29.645] [undefined] GET(/:id): successfully get video 10 with status 200
+[2025-08-15 07:57:29.661] [undefined] GET(/:id/similar): try to get similar videos for video 10
+[2025-08-15 07:57:29.673] [undefined] GET(/:id/similar): successfully get similar videos for video 10 with status 200
+[2025-08-15 07:57:29.702] [undefined] GET(/:id/views): try to add views for video 10
+[2025-08-15 07:57:29.714] [undefined] GET(/:id/views): successfully added views for video 10 with status 200
+[2025-08-15 07:57:31.756] [undefined] POST(/:id): Video added to playlist with id 2 with status 200
+[2025-08-15 08:01:04.884] [undefined] GET(/:id): try to get video 10
+[2025-08-15 08:01:04.895] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 08:01:04.902] [undefined] GET(/:id): successfully get video 10 with status 200
+[2025-08-15 08:01:04.924] [undefined] GET(/:id/similar): try to get similar videos for video 10
+[2025-08-15 08:01:04.942] [undefined] GET(/:id/similar): successfully get similar videos for video 10 with status 200
+[2025-08-15 08:01:04.989] [undefined] GET(/:id/views): try to add views for video 10
+[2025-08-15 08:01:04.998] [undefined] GET(/:id/views): successfully added views for video 10 with status 200
+[2025-08-15 08:01:08.034] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 08:01:08.037] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 08:01:08.041] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 08:01:08.046] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 08:01:08.053] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 08:01:09.580] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 08:09:51.858] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 08:10:08.586] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 08:10:21.732] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 08:10:21.736] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 08:10:21.739] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 08:10:21.746] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 08:10:21.753] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 08:11:01.489] [undefined] GET(/:id): Error retrieving playlist: missing FROM-clause entry for table "channel" with status 500
+[2025-08-15 08:11:36.075] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:34:51.115] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:34:51.118] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:34:51.126] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:34:51.132] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:34:51.141] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:34:52.476] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:36:02.596] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:36:12.642] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:36:12.646] [undefined] GET(/:id): try to get video 7
+[2025-08-15 11:36:12.657] [undefined] GET(/:id): successfully get video 7 with status 200
+[2025-08-15 11:36:12.669] [undefined] GET(/:id/similar): try to get similar videos for video 7
+[2025-08-15 11:36:12.685] [undefined] GET(/:id/similar): successfully get similar videos for video 7 with status 200
+[2025-08-15 11:36:12.709] [undefined] GET(/:id/views): try to add views for video 7
+[2025-08-15 11:36:12.721] [undefined] GET(/:id/views): successfully added views for video 7 with status 200
+[2025-08-15 11:36:15.330] [undefined] POST(/:id): Video added to playlist with id 9 with status 200
+[2025-08-15 11:36:16.992] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:36:16.996] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:36:16.999] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:36:17.004] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:36:17.010] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:36:19.673] [undefined] GET(/:id): Playlist retrieved with id 9 with status 200
+[2025-08-15 11:36:21.015] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:36:21.017] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:36:21.020] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:36:21.024] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:36:21.031] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:37:36.685] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:37:36.688] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:37:36.691] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:37:36.697] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:37:36.704] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:37:37.540] [undefined] GET(/:id): Playlist retrieved with id 9 with status 200
+[2025-08-15 11:37:46.171] [undefined] GET(/:id): try to get video 7
+[2025-08-15 11:37:46.181] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:37:46.186] [undefined] GET(/:id): successfully get video 7 with status 200
+[2025-08-15 11:37:46.197] [undefined] GET(/:id/similar): try to get similar videos for video 7
+[2025-08-15 11:37:46.211] [undefined] GET(/:id/similar): successfully get similar videos for video 7 with status 200
+[2025-08-15 11:37:46.241] [undefined] GET(/:id/views): try to add views for video 7
+[2025-08-15 11:37:46.251] [undefined] GET(/:id/views): successfully added views for video 7 with status 200
+[2025-08-15 11:37:46.753] [undefined] GET(/:id): Playlist retrieved with id 9 with status 200
+[2025-08-15 11:37:48.179] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:37:48.182] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:37:48.184] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:37:48.189] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:37:48.197] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:38:45.205] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:38:45.208] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:38:45.217] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:38:45.221] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:38:45.228] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:39:25.429] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:39:25.432] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:39:25.436] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:39:25.441] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:39:25.447] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:39:33.775] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:39:33.780] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:39:33.783] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:39:33.788] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:39:33.796] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:39:42.483] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:39:42.487] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:39:42.492] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:39:42.499] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:39:42.506] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:39:54.583] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:39:54.587] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:39:54.590] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:39:54.597] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:39:54.604] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:40:01.578] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:02.989] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:40:02.992] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:40:02.996] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:40:03.001] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:40:03.006] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:40:03.583] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:04.040] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:40:04.044] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:40:04.047] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:40:04.050] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:40:04.058] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:40:04.695] [undefined] GET(/:id): Playlist retrieved with id 9 with status 200
+[2025-08-15 11:40:05.139] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:40:05.142] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:40:05.145] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:40:05.149] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:40:05.156] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:40:05.674] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:40:06.063] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:40:06.067] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:40:06.070] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:40:06.074] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:40:06.082] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:40:06.616] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:32.573] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:33.203] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:33.945] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:45.160] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:45.922] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:40:51.863] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:41:01.257] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:41:01.260] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:41:01.264] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:41:01.269] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:41:01.277] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:42:23.314] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:42:23.319] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:42:23.344] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:42:23.351] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:42:23.358] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:42:24.351] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:42:27.415] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:42:27.419] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:42:27.427] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:42:27.432] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:42:27.439] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:42:28.016] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:42:28.584] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:42:28.587] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:42:28.591] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:42:28.595] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:42:28.600] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:42:29.091] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:42:30.125] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:42:30.129] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:42:30.131] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:42:30.136] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:42:30.144] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:42:55.444] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:42:55.447] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:42:55.450] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:42:55.454] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:42:55.462] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:42:55.946] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:43:04.667] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:43:25.896] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:44:01.336] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:44:08.744] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:44:40.681] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:44:51.683] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:45:09.918] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:45:17.445] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:45:23.115] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:46:00.470] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:46:03.102] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:46:03.105] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:46:03.107] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:46:03.113] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:46:03.121] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:46:06.450] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:46:07.270] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:51:55.980] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:52:34.410] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:52:49.764] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:52:59.942] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:53:14.793] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:53:23.643] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:53:42.731] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:54:00.339] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:54:35.499] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:54:53.925] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:55:09.339] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:55:22.887] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 11:56:17.396] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:56:17.401] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:56:17.407] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:56:17.411] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:56:17.418] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:56:18.071] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:56:43.895] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:57:03.654] [undefined] GET(/:id): Playlist retrieved with id 8 with status 200
+[2025-08-15 11:57:05.682] [undefined] DELETE(/:id): Playlist deleted with status 200
+[2025-08-15 11:57:07.595] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:07.598] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:07.601] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:07.606] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:07.614] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:57:27.626] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:27.630] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:27.634] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:27.641] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:27.650] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:57:31.598] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:31.602] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:31.605] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:31.611] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:31.616] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:57:45.169] [undefined] GET(/:id): Playlist retrieved with id 9 with status 200
+[2025-08-15 11:57:49.098] [undefined] DELETE(/:id): Error deleting playlist: update or delete on table "playlists" violates foreign key constraint "playlist_elements_playlist_fkey" on table "playlist_elements" with status 500
+[2025-08-15 11:57:49.135] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:49.139] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:49.141] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:49.147] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:49.156] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:57:50.662] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:50.665] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:50.668] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:50.674] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:50.680] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:57:51.421] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:51.424] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:51.427] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:51.431] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:51.439] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:57:52.853] [undefined] GET(/:id): Playlist retrieved with id 9 with status 200
+[2025-08-15 11:57:53.587] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:53.591] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:53.595] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:53.599] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:53.605] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 11:57:54.570] [undefined] GET(/:id): Playlist retrieved with id 9 with status 200
+[2025-08-15 11:57:59.003] [undefined] DELETE(/:id): Error deleting playlist: update or delete on table "playlists" violates foreign key constraint "playlist_elements_playlist_fkey" on table "playlist_elements" with status 500
+[2025-08-15 11:57:59.062] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-15 11:57:59.065] [undefined] GET(/:id/channel): successfully retrieved channel of user 2 with status 200
+[2025-08-15 11:57:59.069] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-15 11:57:59.074] [undefined] GET(/:id/history): successfully retrieved history of user 2 with status 200
+[2025-08-15 11:57:59.082] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-15 12:02:47.596] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-15 12:02:47.647] [undefined] POST(/): successfully registered with status 200
+[2025-08-15 12:02:47.659] [undefined] POST(/login): try to login with username 'astria'
+[2025-08-15 12:02:47.710] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-15 12:02:49.622] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:02:49.625] [undefined] GET(/:id/channel): failed to retrieve channel of user 1 because it doesn't exist with status 404
+[2025-08-15 12:02:49.630] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 12:02:49.634] [undefined] GET(/:id/history): failed to retrieve history of user 1 because it doesn't exist with status 404
+[2025-08-15 12:02:49.642] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:02:56.061] [undefined] POST(/): try to create new channel with owner 1 and name astria
+[2025-08-15 12:02:56.063] [undefined] POST(/): Successfully created new channel with name astria with status 200
+[2025-08-15 12:02:56.078] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:02:56.082] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:02:57.508] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-15 12:02:57.519] [undefined] GET(/:id/stats): try to get stats
+[2025-08-15 12:02:57.522] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-15 12:02:57.531] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-15 12:02:58.751] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:02:58.754] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:03:17.807] [undefined] POST(/): try to upload video with status undefined
+[2025-08-15 12:03:17.812] [undefined] POST(/): successfully uploaded video with status 200
+[2025-08-15 12:03:17.878] [undefined] POST(/thumbnail): try to add thumbnail to video 1
+[2025-08-15 12:03:17.881] [undefined] POST(/thumbnail): successfully uploaded thumbnail with status 200
+[2025-08-15 12:03:17.900] [undefined] PUT(/:id/tags): try to add tags to video 1
+[2025-08-15 12:03:17.910] [undefined] PUT(/:id/tags): successfully added tags to video 1 with status 200
+[2025-08-15 12:03:21.191] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:03:21.201] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:21.206] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:03:21.218] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:03:21.229] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:03:21.250] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:03:21.265] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:03:25.914] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:03:25.917] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:03:25.919] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 12:03:25.925] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-15 12:03:25.934] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:30.209] [undefined] POST(/): Playlist created with id 2 with status 200
+[2025-08-15 12:03:30.227] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:34.208] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:03:34.219] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:34.223] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:03:34.236] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:03:34.248] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:03:34.273] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:03:34.281] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:03:36.394] [undefined] POST(/:id): Video added to playlist with id 2 with status 200
+[2025-08-15 12:03:38.143] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:03:38.145] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 12:03:38.148] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:03:38.151] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-15 12:03:38.161] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:38.653] [undefined] GET(/:id): Playlist retrieved with id 2 with status 200
+[2025-08-15 12:03:40.880] [undefined] DELETE(/:id): Playlist deleted with status 200
+[2025-08-15 12:03:40.925] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 12:03:40.928] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:03:40.931] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-15 12:03:40.933] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:03:40.942] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:52.229] [undefined] POST(/): Playlist created with id 3 with status 200
+[2025-08-15 12:03:52.247] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:53.608] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:03:53.619] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:53.624] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:03:53.635] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:03:53.648] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:03:53.675] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:03:53.685] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:03:55.180] [undefined] POST(/:id): Video added to playlist with id 3 with status 200
+[2025-08-15 12:03:56.494] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:03:56.497] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:03:56.500] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 12:03:56.504] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-15 12:03:56.511] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:03:57.117] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:06:09.157] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:06:13.801] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:06:13.805] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:06:13.808] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 12:06:13.812] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-15 12:06:13.820] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:06:15.043] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:07:33.375] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:07:46.081] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:07:54.278] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:08:25.981] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:08:48.330] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:09:05.838] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:09:20.029] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:09:31.979] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:10:11.328] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:10:17.318] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:11:07.347] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:11:08.287] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:11:08.297] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:11:08.302] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:11:08.314] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:11:08.327] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:11:08.348] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:11:08.359] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:11:09.147] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:11:43.722] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:12:10.236] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:12:22.230] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:12:36.945] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:12:38.251] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:12:38.262] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:12:38.266] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:12:38.278] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:12:38.291] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:12:38.315] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:12:38.327] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:12:39.300] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:13:16.106] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:13:17.470] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:13:17.481] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:13:17.487] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:13:17.499] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:13:17.513] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:13:17.565] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:13:17.574] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:13:18.292] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:13:19.374] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:13:19.384] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:13:19.389] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:13:19.402] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:13:19.414] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:13:19.438] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:13:19.446] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:13:19.797] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:13:50.493] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:13:52.628] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:13:52.639] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:13:52.644] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:13:52.657] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:13:52.670] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:13:52.693] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:13:52.705] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:13:53.217] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:16:32.830] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:16:33.842] [undefined] GET(/:id): try to get video 1
+[2025-08-15 12:16:33.853] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 12:16:33.859] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 12:16:33.871] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 12:16:33.884] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 12:16:33.909] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 12:16:33.917] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 12:16:34.233] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:18:40.492] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:18:51.040] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:19:00.143] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:19:03.469] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:19:55.046] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:19:57.124] [undefined] DELETE(/:id/video/:videoId): Video deleted from playlist with id 3 with status 200
+[2025-08-15 12:19:57.149] [undefined] GET(/:id): Playlist retrieved with id 3 with status 200
+[2025-08-15 12:20:03.498] [undefined] DELETE(/:id): Playlist deleted with status 200
+[2025-08-15 12:20:03.611] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 12:20:03.614] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 12:20:03.617] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 12:20:03.621] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-15 12:20:03.630] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 18:12:13.369] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-15 18:12:17.242] [undefined] GET(/:id): try to get video 1
+[2025-08-15 18:12:17.253] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 18:12:17.258] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 18:12:17.269] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 18:12:17.284] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 18:12:17.306] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 18:12:17.317] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-15 18:12:18.568] [undefined] POST(/:id): Video added to playlist with id 1 with status 200
+[2025-08-15 18:12:21.672] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-15 18:12:21.676] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-15 18:12:21.678] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-15 18:12:21.682] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-15 18:12:21.691] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 18:12:22.806] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-15 18:12:23.969] [undefined] GET(/:id): try to get video 1
+[2025-08-15 18:12:23.980] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-15 18:12:23.985] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-15 18:12:23.997] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-15 18:12:24.010] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-15 18:12:24.033] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-15 18:12:24.042] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:40:29.247] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 07:40:29.250] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 07:40:29.253] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 07:40:29.257] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 07:40:29.270] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:40:30.139] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:40:33.468] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:40:33.478] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:40:33.485] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:40:33.496] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:40:33.507] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:40:33.524] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:40:33.534] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:40:47.086] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 07:40:47.090] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 07:40:47.095] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 07:40:47.100] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 07:40:47.109] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:40:48.448] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-16 07:40:48.459] [undefined] GET(/:id/stats): try to get stats
+[2025-08-16 07:40:48.463] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-16 07:40:48.471] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-16 07:40:49.626] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:40:49.629] [undefined] GET(/:id/likes/day): try to get likes per day
+[2025-08-16 07:40:49.640] [undefined] GET(/:id/likes/day): successfully retrieved likes per day with status 200
+[2025-08-16 07:40:49.645] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:40:54.460] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-16 07:40:54.470] [undefined] GET(/:id/stats): try to get stats
+[2025-08-16 07:40:54.474] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-16 07:40:54.482] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-16 07:40:58.675] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 07:40:58.679] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 07:41:20.113] [undefined] POST(/): try to upload video with status undefined
+[2025-08-16 07:41:20.120] [undefined] POST(/): successfully uploaded video with status 200
+[2025-08-16 07:41:20.184] [undefined] POST(/thumbnail): try to add thumbnail to video 2
+[2025-08-16 07:41:20.188] [undefined] POST(/thumbnail): successfully uploaded thumbnail with status 200
+[2025-08-16 07:41:20.213] [undefined] PUT(/:id/tags): try to add tags to video 2
+[2025-08-16 07:41:20.222] [undefined] PUT(/:id/tags): Tag video already exists for video 2 with status 200
+[2025-08-16 07:41:20.227] [undefined] PUT(/:id/tags): successfully added tags to video 2 with status 200
+[2025-08-16 07:41:24.595] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:41:24.606] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:41:24.611] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:41:24.624] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:41:24.636] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:41:24.663] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:41:24.672] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:43:21.171] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:43:21.180] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:43:21.185] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:43:22.503] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:43:22.514] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:43:22.856] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:43:22.867] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:43:47.345] [undefined] GET(/:id): try to get video 2
+[2025-08-16 07:43:47.357] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:43:47.361] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 07:43:47.423] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 07:43:47.435] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 07:43:47.496] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 07:43:47.507] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 07:43:52.404] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 07:43:52.407] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 07:43:52.411] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 07:43:52.416] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 07:43:52.424] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:43:53.196] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:43:54.347] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:43:54.358] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:43:54.364] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:43:54.377] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:43:54.390] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:43:54.421] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:43:54.429] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:44:30.592] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:44:30.603] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:44:30.606] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:44:30.646] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:44:30.659] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:44:30.704] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:44:30.713] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:46:22.913] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:46:22.925] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:46:22.930] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:46:22.963] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:46:22.976] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:46:23.027] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:46:23.037] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:47:17.266] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:47:17.277] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:47:17.281] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:47:17.298] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:47:17.312] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:47:17.334] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:47:17.343] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:47:22.197] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:47:22.208] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:47:22.214] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:47:22.228] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:47:22.242] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:47:22.264] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:47:22.271] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:47:24.059] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:47:24.070] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:47:24.074] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:47:24.090] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:47:24.104] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:47:24.124] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:47:24.133] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:47:52.488] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:47:52.500] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:47:52.505] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:47:52.519] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:47:52.531] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:47:52.558] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:47:52.570] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:48:11.211] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:48:11.222] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:48:11.227] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:48:11.241] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:48:11.254] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:48:11.279] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:48:11.288] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:49:14.026] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:49:14.039] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:49:14.044] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:49:14.059] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:49:14.074] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:49:14.105] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:49:14.113] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:49:21.355] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:49:21.368] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:49:21.372] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:49:21.388] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:49:21.401] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:49:21.424] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:49:21.433] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:49:49.303] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:49:49.315] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:49:49.318] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:49:49.331] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:49:49.344] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:49:49.369] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:49:49.379] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:51:23.803] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:51:23.814] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:51:23.818] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:51:23.828] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:51:23.839] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:51:23.853] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:51:23.881] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:51:23.889] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:52:02.095] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:52:02.109] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:52:02.114] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:52:02.123] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:52:02.132] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:52:02.143] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:52:02.194] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:54:38.628] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:54:38.642] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:54:38.647] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:54:38.657] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:54:38.671] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:54:38.683] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:54:38.743] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:54:38.757] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:55:08.863] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:55:08.879] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:55:08.883] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:55:08.891] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:55:08.914] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:55:08.927] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:55:08.957] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:55:08.966] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:55:35.764] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:55:35.777] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:55:35.783] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:55:35.793] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:55:35.810] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:55:35.822] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:55:35.876] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:55:35.885] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:55:49.814] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:55:49.828] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:55:49.834] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:55:49.841] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:55:49.861] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:55:49.876] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:55:49.921] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:55:49.931] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:57:02.764] [undefined] GET(/:id): try to get video 2
+[2025-08-16 07:57:02.775] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:57:02.779] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 07:57:02.792] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 07:57:02.805] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 07:57:02.832] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 07:57:02.841] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 07:57:04.973] [undefined] POST(/:id): Video added to playlist with id 1 with status 200
+[2025-08-16 07:57:08.427] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 07:57:08.432] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 07:57:08.435] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 07:57:08.440] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 07:57:08.450] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:57:10.201] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:57:11.517] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:57:11.525] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:57:11.533] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:57:11.542] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:57:11.551] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:57:11.563] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:57:11.585] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:57:11.595] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:58:14.258] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:58:14.269] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:58:14.275] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:58:14.284] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:58:14.288] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:58:14.301] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:58:14.320] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:58:14.329] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:58:32.008] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:58:32.022] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:58:32.026] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:58:32.033] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:58:32.044] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:58:32.058] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:58:32.091] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:58:32.099] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:58:39.414] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:58:39.429] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:58:39.434] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:58:39.441] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:58:39.451] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:58:39.465] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:58:39.488] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:58:39.497] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:58:50.565] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:58:50.576] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:58:50.582] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:58:50.592] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:58:50.597] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:58:50.609] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:58:50.640] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:58:50.648] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:58:58.868] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:58:58.881] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:58:58.884] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:58:58.896] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:58:58.899] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:58:58.913] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:58:58.939] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:58:58.949] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:59:05.950] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:59:05.965] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:59:05.969] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:59:05.976] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:59:05.985] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:59:06.001] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:59:06.021] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:59:06.029] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:59:16.318] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:59:16.333] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:59:16.339] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:59:16.346] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:59:16.358] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:59:16.372] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:59:16.411] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:59:16.420] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:59:24.935] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:59:24.951] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:59:24.956] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:59:24.963] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:59:24.977] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:59:24.991] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:59:25.008] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:59:25.016] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 07:59:32.661] [undefined] GET(/:id): try to get video 1
+[2025-08-16 07:59:32.676] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 07:59:32.681] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 07:59:32.689] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 07:59:32.698] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 07:59:32.719] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 07:59:32.747] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 07:59:32.757] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:00:06.773] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:00:13.132] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:00:13.146] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:00:13.150] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:00:13.165] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:00:13.169] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:00:13.184] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:00:13.205] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:00:13.214] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:00:23.385] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:00:23.396] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:00:23.403] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:00:23.416] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:00:23.420] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:00:23.434] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:00:23.461] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:00:23.470] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:00:34.140] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:00:34.156] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:00:34.161] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:00:34.167] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:00:34.179] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:00:34.194] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:00:34.216] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:00:34.225] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:00:50.188] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:00:50.202] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:00:50.206] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:00:50.215] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:00:50.227] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:00:50.244] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:00:50.272] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:00:50.281] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:01:44.683] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:01:44.696] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:01:44.699] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:01:44.708] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:01:44.720] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:01:44.734] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:01:44.758] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:01:44.767] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:01:47.667] [undefined] GET(/:id): try to get video 2
+[2025-08-16 08:01:47.682] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:01:47.687] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 08:01:47.695] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:01:47.703] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 08:01:47.713] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 08:01:47.728] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 08:01:47.738] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 08:01:48.827] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:01:48.862] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:01:48.868] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:01:48.875] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:01:48.881] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:01:48.893] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:01:48.906] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:01:48.914] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:01:49.238] [undefined] GET(/:id): try to get video 2
+[2025-08-16 08:01:49.253] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:01:49.257] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 08:01:49.263] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:01:49.270] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 08:01:49.279] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 08:01:49.294] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 08:01:49.302] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 08:01:49.597] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:01:49.612] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:01:49.617] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:01:49.623] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:01:49.631] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:01:49.642] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:01:49.656] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:01:49.664] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:02:41.666] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:02:41.679] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:02:41.684] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:02:41.692] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:02:41.702] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:02:41.715] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:02:41.745] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:02:41.753] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:02:52.418] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:02:52.433] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:02:52.439] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:02:52.446] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:02:52.458] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:02:52.474] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:02:52.495] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:02:52.503] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:02:59.962] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:02:59.975] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:02:59.980] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:02:59.989] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:02:59.997] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:03:00.011] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:03:00.046] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:03:00.055] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:03:16.204] [undefined] GET(/:id/like): try to toggle like on video 1
+[2025-08-16 08:03:16.215] [undefined] GET(/:id/like): no likes found adding likes for video 1 with status 200
+[2025-08-16 08:05:32.953] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:05:32.965] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:05:32.971] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:05:32.982] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:05:32.988] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:05:33.003] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:05:33.021] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:05:33.030] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:06:16.148] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:06:16.159] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:06:16.166] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:06:16.174] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:06:16.178] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:06:16.190] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:06:16.217] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:06:16.227] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:06:28.982] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:06:28.993] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:06:29.000] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:06:29.013] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:06:29.017] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:06:29.031] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:06:29.049] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:06:29.058] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:06:32.423] [undefined] GET(/:id): try to get video 2
+[2025-08-16 08:06:32.437] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:06:32.442] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 08:06:32.449] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:06:32.455] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 08:06:32.464] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 08:06:32.478] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 08:06:32.487] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 08:06:33.211] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:06:45.853] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:06:45.869] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:06:45.875] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:06:45.882] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:06:45.897] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:06:45.911] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:06:45.933] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:06:45.947] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:06:47.110] [undefined] GET(/:id): try to get video 2
+[2025-08-16 08:06:47.119] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:06:47.127] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 08:06:47.135] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:06:47.143] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 08:06:47.152] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 08:06:47.166] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 08:06:47.173] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 08:06:47.603] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:06:47.614] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:06:47.621] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:06:47.627] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:06:47.635] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:06:47.645] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:06:47.659] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:06:47.667] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:07:19.486] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:07:19.501] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:07:19.505] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:07:19.512] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:07:19.539] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:07:19.555] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:07:19.606] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:07:19.616] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:07:56.143] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:07:56.153] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:07:56.161] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:07:56.170] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:07:56.175] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:07:56.187] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:07:56.271] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:07:56.279] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:08:19.655] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:08:19.672] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:08:19.677] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:08:19.685] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:08:19.697] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:08:19.711] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:08:19.767] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:08:19.778] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:08:40.999] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:08:41.016] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:08:41.022] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:08:41.036] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:08:41.047] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:08:41.062] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:08:41.126] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:08:41.137] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:09:01.536] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:09:01.552] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:09:01.557] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:09:01.565] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:09:01.589] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:09:01.604] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:09:01.655] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:09:01.666] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:09:04.562] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:09:04.578] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:09:04.582] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:09:04.589] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:09:04.599] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:09:04.612] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:09:04.645] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:09:04.653] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:09:19.860] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:09:19.875] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:09:19.880] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:09:19.890] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:09:19.914] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:09:19.929] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:09:19.993] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:09:20.001] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:10:04.584] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:10:04.599] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:10:04.604] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:10:04.612] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:10:04.633] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:10:04.648] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:10:04.681] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:10:04.691] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:10:16.082] [undefined] GET(/:id): try to get video 2
+[2025-08-16 08:10:16.097] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:10:16.101] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 08:10:16.110] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:10:16.115] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 08:10:16.125] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 08:10:16.140] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 08:10:16.148] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 08:10:17.714] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:10:17.729] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:10:17.734] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:10:17.740] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:10:17.747] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:10:17.757] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:10:17.771] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:10:17.781] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:10:29.787] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:10:29.798] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:10:29.804] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:10:29.814] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:10:29.820] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:10:29.834] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:10:29.875] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:10:29.886] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:10:31.874] [undefined] GET(/:id): try to get video 2
+[2025-08-16 08:10:31.884] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:10:31.891] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 08:10:31.899] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:10:31.906] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 08:10:31.916] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 08:10:31.932] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 08:10:31.939] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 08:10:32.618] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:10:32.633] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:10:32.636] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:10:32.644] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:10:32.649] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:10:32.659] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:10:32.672] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:10:32.681] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:11:44.265] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 08:11:44.269] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 08:11:45.948] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-16 08:11:53.933] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-16 08:11:53.944] [undefined] GET(/:id/stats): try to get stats
+[2025-08-16 08:11:53.949] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-16 08:11:53.958] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-16 08:11:58.519] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:11:58.522] [undefined] GET(/:id/likes/day): try to get likes per day
+[2025-08-16 08:11:58.536] [undefined] GET(/:id/likes/day): successfully retrieved likes per day with status 200
+[2025-08-16 08:11:58.541] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:12:10.925] [undefined] GET(/:id): try to get channel with id 1
+[2025-08-16 08:12:10.935] [undefined] GET(/:id/stats): try to get stats
+[2025-08-16 08:12:10.940] [undefined] GET(/:id): Successfully get channel with id 1 with status 200
+[2025-08-16 08:12:10.950] [undefined] GET(/:id/stats): Successfully get stats with status 200
+[2025-08-16 08:12:17.818] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:12:17.829] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:12:17.835] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:12:17.848] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:12:17.863] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:12:17.883] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:12:17.892] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:12:20.826] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 08:12:20.829] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 08:12:20.834] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 08:12:20.839] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 08:12:20.846] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:12:21.667] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:12:28.790] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:12:28.798] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:12:28.806] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:12:28.813] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:12:28.820] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:12:28.835] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:12:28.861] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:12:28.870] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 08:12:36.261] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:12:36.971] [undefined] GET(/:id): try to get video 2
+[2025-08-16 08:12:36.982] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 08:12:36.987] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:12:36.998] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:12:37.002] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 08:12:37.016] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 08:12:37.049] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 08:12:37.058] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 08:41:18.105] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 08:41:18.109] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 08:41:18.113] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 08:41:18.118] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 08:41:18.126] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:41:21.696] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:41:24.102] [undefined] DELETE(/:id/video/:videoId): Video deleted from playlist with id 1 with status 200
+[2025-08-16 08:41:24.125] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 08:41:34.167] [undefined] GET(/:id): try to get video 1
+[2025-08-16 08:41:34.179] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 08:41:34.185] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 08:41:34.197] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 08:41:34.210] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 08:41:34.231] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 08:41:34.243] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:07:56.380] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 10:07:56.384] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 10:07:56.392] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 10:07:56.398] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 10:07:56.406] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:07:57.219] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:08:00.077] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:08:00.088] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:08:00.092] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:08:00.107] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:08:00.120] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:08:00.152] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:08:00.161] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:08:02.315] [undefined] POST(/:id): Video added to playlist with id 1 with status 200
+[2025-08-16 10:08:08.051] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-16 10:08:08.055] [undefined] GET(/:id/channel): successfully retrieved channel of user 1 with status 200
+[2025-08-16 10:08:08.059] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-16 10:08:08.064] [undefined] GET(/:id/history): successfully retrieved history of user 1 with status 200
+[2025-08-16 10:08:08.072] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:08:08.888] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:08:09.577] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:08:09.590] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:08:09.595] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:08:09.602] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:08:09.612] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:08:09.624] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:08:09.653] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:08:09.661] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:13:50.098] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:13:50.109] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:13:50.115] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:13:50.126] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:13:50.130] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:13:50.144] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:13:50.166] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:13:50.175] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:17:16.300] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:17:16.316] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:17:16.321] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:17:16.327] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:17:16.357] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:17:16.372] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:17:16.428] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:17:16.438] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:18:16.745] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:18:16.757] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:18:16.764] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:18:16.773] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:18:16.777] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:18:16.789] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:18:16.815] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:18:16.823] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:18:44.111] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:18:44.125] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:18:44.131] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:18:44.140] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:18:44.168] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:18:44.184] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:18:44.238] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:18:44.248] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:18:50.434] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:18:50.449] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:18:50.454] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:18:50.461] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:18:50.477] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:18:50.492] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:18:50.519] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:18:50.529] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:20:32.933] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:20:32.948] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:20:32.979] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:20:40.646] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:20:40.663] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:20:40.668] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:20:40.676] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:20:40.687] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:20:40.706] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:20:40.734] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:20:40.743] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:20:50.052] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:20:50.067] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:20:50.073] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:20:50.080] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:20:50.091] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:20:50.106] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:20:50.157] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:20:50.166] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:21:36.064] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:21:36.081] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:21:36.086] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:21:36.095] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:21:36.105] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:21:36.116] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:21:36.154] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:21:36.163] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:21:48.869] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:21:48.887] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:21:48.899] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:21:48.906] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:21:48.924] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:21:48.937] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:21:48.994] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:21:49.002] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:22:22.723] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:22:22.738] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:22:22.745] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:22:22.752] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:22:22.763] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:22:22.775] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:22:22.807] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:22:22.817] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:22:39.024] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:22:39.039] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:22:39.044] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:22:39.052] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:22:39.063] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:22:39.074] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:22:39.107] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:22:39.118] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:22:55.496] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:22:55.529] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:22:55.539] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:22:55.546] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:22:55.555] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:22:55.565] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:22:55.582] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:22:55.590] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:23:49.484] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:23:49.499] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:23:49.503] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:23:49.511] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:23:49.526] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:23:49.541] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:23:49.602] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:23:49.611] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:25:00.146] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:25:00.161] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:25:00.164] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:25:00.173] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:25:00.182] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:25:00.196] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:25:00.224] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:25:00.232] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:25:15.511] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:25:15.523] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:25:15.530] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:25:15.538] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:25:15.547] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:25:15.559] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:25:15.575] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:25:15.583] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:25:32.513] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:25:32.529] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:25:32.534] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:25:32.543] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:25:32.551] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:25:32.563] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:25:32.697] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:25:32.708] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:26:49.745] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:26:49.760] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:26:49.766] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:26:49.774] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:26:49.784] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:26:49.797] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:26:49.827] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:26:49.837] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:26:57.644] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:26:57.659] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:26:57.666] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:26:57.673] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:26:57.692] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:26:57.703] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:26:57.719] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:26:57.727] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:27:16.484] [undefined] POST(/): try to post comment
+[2025-08-16 10:27:16.497] [undefined] POST(/): successfully post comment with status 200
+[2025-08-16 10:27:19.129] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:27:19.136] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:27:19.144] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:27:19.151] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:27:19.161] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:27:19.171] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:27:19.186] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:27:19.194] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:27:22.188] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:27:22.203] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:27:22.209] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:27:22.218] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:27:22.229] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:27:22.241] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:27:22.277] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:27:22.285] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:28:10.735] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:28:10.749] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:28:10.754] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:28:10.763] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:28:10.774] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:28:10.788] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:28:10.806] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:28:10.815] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:28:39.169] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:28:39.185] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:28:39.199] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:28:39.207] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:28:39.217] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:28:39.234] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:28:39.271] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:28:39.282] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:28:43.413] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:28:43.425] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:28:43.431] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:28:43.438] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:28:43.449] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:28:43.461] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:28:43.558] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:28:43.566] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:28:44.891] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:28:44.904] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:28:44.909] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:28:44.920] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:28:44.932] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:28:44.945] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:28:44.965] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:28:44.973] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:28:45.681] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:28:45.696] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:28:45.701] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:28:45.710] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:28:45.715] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:28:45.726] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:28:45.754] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:28:45.762] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:28:56.073] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:28:56.090] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:28:56.095] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:28:56.102] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:28:56.112] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:28:56.123] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:28:56.149] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:28:56.156] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:29:02.728] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:29:02.758] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:29:02.764] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:29:02.774] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:29:02.780] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:29:02.791] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:29:02.821] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:29:02.828] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:29:12.843] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:29:12.858] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:29:12.864] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:29:12.871] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:29:12.881] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:29:12.893] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:29:12.915] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:29:12.923] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 10:33:13.987] [undefined] GET(/:id): try to get video 1
+[2025-08-16 10:33:14.001] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:33:14.005] [undefined] GET(/:id): successfully get video 1 with status 200
+[2025-08-16 10:33:14.015] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:33:14.022] [undefined] GET(/:id/similar): try to get similar videos for video 1
+[2025-08-16 10:33:14.037] [undefined] GET(/:id/similar): successfully get similar videos for video 1 with status 200
+[2025-08-16 10:33:14.057] [undefined] GET(/:id/views): try to add views for video 1
+[2025-08-16 10:33:14.069] [undefined] GET(/:id/views): successfully added views for video 1 with status 200
+[2025-08-16 10:33:22.654] [undefined] GET(/:id): try to get video 2
+[2025-08-16 10:33:22.668] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-16 10:33:22.674] [undefined] GET(/:id): successfully get video 2 with status 200
+[2025-08-16 10:33:22.681] [undefined] GET(/:id): Playlist retrieved with id 1 with status 200
+[2025-08-16 10:33:22.689] [undefined] GET(/:id/similar): try to get similar videos for video 2
+[2025-08-16 10:33:22.703] [undefined] GET(/:id/similar): successfully get similar videos for video 2 with status 200
+[2025-08-16 10:33:22.718] [undefined] GET(/:id/views): try to add views for video 2
+[2025-08-16 10:33:22.727] [undefined] GET(/:id/views): successfully added views for video 2 with status 200
+[2025-08-16 16:10:03.689] [undefined] POST(/login): try to login with username 'astria'
+[2025-08-16 16:10:03.742] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-17 08:50:14.128] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 08:50:14.181] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 08:50:14.195] [undefined] POST(/login): try to login with username 'astria'
+[2025-08-17 08:50:14.248] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-17 08:51:42.597] [undefined] POST(/): try to register a user with username: test1 and email: thelolshow974@gmail.com
+[2025-08-17 09:11:03.106] [undefined] POST(/): try to register a user with username: test1 and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:11:39.729] [undefined] POST(/): failed because email already exists with status 400
+[2025-08-17 09:11:59.416] [undefined] POST(/): try to register a user with username: test2 and email: thelolshow974@gmail.com
+[2025-08-17 09:14:31.308] [undefined] POST(/): try to register a user with username: test2 and email: thelolshow974@gmail.com
+[2025-08-17 09:16:05.463] [undefined] POST(/): try to register a user with username: test1 and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:16:10.314] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:16:10.328] [undefined] POST(/login): try to login with username 'test1'
+[2025-08-17 09:16:10.380] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-17 09:17:17.542] [undefined] POST(/): try to register a user with username: test1 and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:17:22.394] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:17:22.406] [undefined] POST(/login): try to login with username 'test1'
+[2025-08-17 09:17:22.457] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-17 09:19:43.340] [undefined] GET(/:id/channel): try to retrieve channel of user 1
+[2025-08-17 09:19:43.345] [undefined] GET(/:id/channel): failed to retrieve channel of user 1 because it doesn't exist with status 404
+[2025-08-17 09:19:43.350] [undefined] GET(/:id/history): try to retrieve history of user 1
+[2025-08-17 09:19:43.354] [undefined] GET(/:id/history): failed to retrieve history of user 1 because it doesn't exist with status 404
+[2025-08-17 09:19:43.363] [undefined] GET(/user/:id): Playlists retrieved for user with id 1 with status 200
+[2025-08-17 09:20:05.669] [undefined] POST(/): try to register a user with username: test2 and email: thelolshow974@gmail.com
+[2025-08-17 09:20:10.512] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:20:10.525] [undefined] POST(/login): try to login with username 'test2'
+[2025-08-17 09:20:10.576] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-17 09:21:15.604] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-17 09:21:15.608] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-17 09:21:15.611] [undefined] GET(/:id/channel): failed to retrieve channel of user 2 because it doesn't exist with status 404
+[2025-08-17 09:21:15.615] [undefined] GET(/:id/history): failed to retrieve history of user 2 because it doesn't exist with status 404
+[2025-08-17 09:21:15.627] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-17 09:25:52.056] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
+[2025-08-17 09:30:07.808] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:30:13.318] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:30:13.333] [undefined] POST(/login): try to login with username 'astria'
+[2025-08-17 09:30:13.342] [undefined] POST(/login): failed to login with status 401
+[2025-08-17 09:31:15.336] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:31:16.156] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:31:16.165] [undefined] POST(/login): try to login with username 'astria'
+[2025-08-17 09:31:16.175] [undefined] POST(/login): failed to login with status 401
+[2025-08-17 09:32:08.935] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:32:09.739] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:32:09.746] [undefined] POST(/login): try to login with username 'astria'
+[2025-08-17 09:32:09.755] [undefined] POST(/login): failed to login with status 401
+[2025-08-17 09:33:37.507] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:33:38.302] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:35:22.955] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:35:27.758] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:36:56.856] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:36:57.653] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:40:35.290] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:40:40.072] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:43:01.395] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:43:02.183] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:43:14.728] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com
+[2025-08-17 09:43:14.737] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 404
+[2025-08-17 09:43:23.307] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com
+[2025-08-17 09:43:23.316] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 404
+[2025-08-17 09:43:51.630] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com
+[2025-08-17 09:43:51.639] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 404
+[2025-08-17 09:46:34.186] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com with token undefined
+[2025-08-17 09:46:34.196] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 404
+[2025-08-17 09:47:04.196] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:47:09.664] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:48:48.612] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:48:50.099] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:49:00.678] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com with token undefined
+[2025-08-17 09:49:00.687] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 404
+[2025-08-17 09:50:09.224] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:50:10.001] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 09:50:22.079] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com with token undefined
+[2025-08-17 09:50:22.089] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 404
+[2025-08-17 09:59:51.783] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 09:59:56.691] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 10:00:23.412] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com with token 08185
+[2025-08-17 10:00:23.422] [undefined] POST(/verify-email): successfully verified email for sachaguerin.sg@gmail.com with status 200
+[2025-08-17 10:03:07.906] [undefined] POST(/): try to register a user with username: astria and email: sachaguerin.sg@gmail.com
+[2025-08-17 10:03:12.799] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 10:03:28.573] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com with token da3cb
+[2025-08-17 10:03:28.585] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 500
+[2025-08-17 10:04:05.961] [undefined] POST(/verify-email): try to verify email for sachaguerin.sg@gmail.com with token da3cb
+[2025-08-17 10:04:05.972] [undefined] POST(/verify-email): failed to verify email for sachaguerin.sg@gmail.com with status 404
+[2025-08-17 10:05:00.597] [undefined] POST(/): try to register a user with username: test1 and email: thelolshow974@gmail.com
+[2025-08-17 10:05:05.427] [undefined] POST(/): successfully registered with status 200
+[2025-08-17 10:05:18.158] [undefined] POST(/verify-email): try to verify email for thelolshow974@gmail.com with token 6e57b
+[2025-08-17 10:05:18.170] [undefined] POST(/verify-email): successfully verified email for thelolshow974@gmail.com with status 200
+[2025-08-17 10:06:16.785] [undefined] POST(/login): try to login with username 'test1'
+[2025-08-17 10:06:16.839] [undefined] POST(/login): Successfully logged in with status 200
+[2025-08-17 10:06:21.123] [undefined] GET(/:id/channel): try to retrieve channel of user 2
+[2025-08-17 10:06:21.127] [undefined] GET(/:id/channel): failed to retrieve channel of user 2 because it doesn't exist with status 404
+[2025-08-17 10:06:21.133] [undefined] GET(/:id/history): try to retrieve history of user 2
+[2025-08-17 10:06:21.138] [undefined] GET(/:id/history): failed to retrieve history of user 2 because it doesn't exist with status 404
+[2025-08-17 10:06:21.148] [undefined] GET(/user/:id): Playlists retrieved for user with id 2 with status 200
diff --git a/backend/package-lock.json b/backend/package-lock.json
index 967c063..faa30e7 100644
--- a/backend/package-lock.json
+++ b/backend/package-lock.json
@@ -18,6 +18,7 @@
"jsonwebtoken": "^9.0.2",
"moment": "^2.30.1",
"multer": "^2.0.1",
+ "nodemailer": "^7.0.5",
"pg": "^8.16.3"
},
"devDependencies": {
@@ -3104,6 +3105,15 @@
"node-gyp-build-test": "build-test.js"
}
},
+ "node_modules/nodemailer": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.5.tgz",
+ "integrity": "sha512-nsrh2lO3j4GkLLXoeEksAMgAOqxOv6QumNRVQTJwKH4nuiww6iC2y7GyANs9kRAxCexg3+lTWM3PZ91iLlVjfg==",
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/nodemon": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz",
diff --git a/backend/package.json b/backend/package.json
index b960bb8..28e7f10 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -22,6 +22,7 @@
"jsonwebtoken": "^9.0.2",
"moment": "^2.30.1",
"multer": "^2.0.1",
+ "nodemailer": "^7.0.5",
"pg": "^8.16.3"
},
"devDependencies": {
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 9efeef2..42be633 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -15,6 +15,8 @@ services:
JWT_SECRET: ${JWT_SECRET}
LOG_FILE: ${LOG_FILE}
PORT: ${BACKEND_PORT}
+ GMAIL_USER: ${GMAIL_USER}
+ GMAIL_PASSWORD: ${GMAIL_PASSWORD}
volumes:
- ./backend/logs:/var/log/freetube
- ./backend:/app
@@ -44,7 +46,21 @@ services:
- ./nginx/nginx-selfsigned.key:/etc/nginx/ssl/nginx-selfsigned.key
depends_on:
- resit_backend
+
+ mailpit:
+ image: axllent/mailpit:latest
+ ports:
+ - "8025:8025" # Web UI
+ - "1025:1025" # SMTP
+ volumes:
+ - mailpit-data:/data
+ environment:
+ # set where to store the database
+ MP_DATABASE: /data/mailpit.db
+ restart: unless-stopped
volumes:
db_data:
+ driver: local
+ mailpit-data:
driver: local
\ No newline at end of file
diff --git a/frontend/src/assets/img/background.png b/frontend/src/assets/img/background.png
new file mode 100644
index 0000000..51fd619
Binary files /dev/null and b/frontend/src/assets/img/background.png differ
diff --git a/frontend/src/assets/svg/eye-slash.svg b/frontend/src/assets/svg/eye-slash.svg
new file mode 100644
index 0000000..96fa82e
--- /dev/null
+++ b/frontend/src/assets/svg/eye-slash.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/frontend/src/assets/svg/eye.svg b/frontend/src/assets/svg/eye.svg
new file mode 100644
index 0000000..cb70721
--- /dev/null
+++ b/frontend/src/assets/svg/eye.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/frontend/src/assets/svg/trash.svg b/frontend/src/assets/svg/trash.svg
new file mode 100644
index 0000000..4bf6118
--- /dev/null
+++ b/frontend/src/assets/svg/trash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frontend/src/components/Navbar.jsx b/frontend/src/components/Navbar.jsx
index 0e760cd..3b64e47 100644
--- a/frontend/src/components/Navbar.jsx
+++ b/frontend/src/components/Navbar.jsx
@@ -48,6 +48,7 @@ export default function Navbar({ isSearchPage = false, alerts = [], onCloseAlert