From da55b65a42cc9b8a34089d2b24a823f54faf13ab Mon Sep 17 00:00:00 2001
From: DutchEllie <personal@quenten.nl>
Date: Mon, 22 Aug 2022 16:15:38 +0200
Subject: [PATCH] Add music table, but neglect actually doing something with it

---
 .../20220820100623_create-users-table.ts      |  2 +-
 .../20220822134642_create-music-table.ts      | 18 +++++++++++++
 src/lib/db/music.ts                           | 26 +++++++++++++++++++
 src/lib/db/user.ts                            | 10 +++----
 src/lib/entities/music.ts                     |  9 +++++++
 src/lib/entities/user.ts                      |  2 +-
 6 files changed, 59 insertions(+), 8 deletions(-)
 create mode 100644 src/lib/db/migrations/20220822134642_create-music-table.ts
 create mode 100644 src/lib/db/music.ts
 create mode 100644 src/lib/entities/music.ts

diff --git a/src/lib/db/migrations/20220820100623_create-users-table.ts b/src/lib/db/migrations/20220820100623_create-users-table.ts
index 9f3c512..e405b1a 100644
--- a/src/lib/db/migrations/20220820100623_create-users-table.ts
+++ b/src/lib/db/migrations/20220820100623_create-users-table.ts
@@ -3,7 +3,7 @@ import type { Knex } from "knex";
 
 export async function up(knex: Knex): Promise<void> {
 	return knex.schema.createTable("users", (table) => {
-		table.increments("id", { primaryKey: true });
+		table.increments("userid", { primaryKey: true });
 		table.string("username", 255).notNullable;
 		table.string("email", 255).notNullable;
 		table.string("password", 64).notNullable;
diff --git a/src/lib/db/migrations/20220822134642_create-music-table.ts b/src/lib/db/migrations/20220822134642_create-music-table.ts
new file mode 100644
index 0000000..b3c4274
--- /dev/null
+++ b/src/lib/db/migrations/20220822134642_create-music-table.ts
@@ -0,0 +1,18 @@
+import type { Knex } from "knex";
+
+
+export async function up(knex: Knex): Promise<void> {
+	return knex.schema.createTable("music", (table) => {
+		table.increments("musicid", { primaryKey: true });
+		table.string("ytlink", 255);
+		table.integer("userid");
+		table.foreign("userid").references("userid").inTable("users");
+		table.timestamps(true, true);
+	});
+}
+
+
+export async function down(knex: Knex): Promise<void> {
+	return knex.schema.dropTable("music");
+}
+
diff --git a/src/lib/db/music.ts b/src/lib/db/music.ts
new file mode 100644
index 0000000..f44cb07
--- /dev/null
+++ b/src/lib/db/music.ts
@@ -0,0 +1,26 @@
+import db from "./db";
+import type User from "../entities/user";
+import type Music from "../entities/music";
+
+export function addSong(link: string, userid: number): Promise<number> {
+	const song: Music = {
+		ytlink: link,
+		userID: userid,
+	};
+	return db()
+		.insert(song)
+		.into("music")
+		.then((v) => {
+			return v[0];
+		});
+}
+
+export function getSongsByUserID(userid: number): Promise<Music[]> {
+	return db()
+		.select("*")
+		.from<Music>("music")
+		.where("userid", userid)
+		.then((v) => {
+			return v;
+		});
+}
diff --git a/src/lib/db/user.ts b/src/lib/db/user.ts
index 602184f..e4300ce 100644
--- a/src/lib/db/user.ts
+++ b/src/lib/db/user.ts
@@ -1,12 +1,12 @@
 import db from "./db";
 import type User from "../entities/user";
 
-export function getID(id: number): Promise<User | undefined>{
-	const user = db().select("*").from<User>("users").where("id", id).first().then((user) => {
+export function getID(userid: number): Promise<User | undefined>{
+	const user = db().select("*").from<User>("users").where("userid", userid).first().then((user) => {
 		return user;
 	});
 	return user;
-}
+};
 
 export function createUser(username: string, email: string, website: string, password: string): Promise<number> {
 	return db()
@@ -20,6 +20,4 @@ export function createUser(username: string, email: string, website: string, pas
 	.then((n) => {
 		return n[0];
 	});
-}
-
-//createUser("quenten", "test@email", "", "password");
\ No newline at end of file
+};
diff --git a/src/lib/entities/music.ts b/src/lib/entities/music.ts
new file mode 100644
index 0000000..5d11bca
--- /dev/null
+++ b/src/lib/entities/music.ts
@@ -0,0 +1,9 @@
+interface Music {
+	musicID?: number;
+	ytlink: string;
+	userID: number;
+	created_at?: Date,
+	updated_at?: Date,
+}
+
+export default Music;
\ No newline at end of file
diff --git a/src/lib/entities/user.ts b/src/lib/entities/user.ts
index 5a59c6c..8815f53 100644
--- a/src/lib/entities/user.ts
+++ b/src/lib/entities/user.ts
@@ -1,5 +1,5 @@
 interface User {
-	id: number,
+	userid: number,
 	username: string,
 	email: string,
 	password: string,