1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-24 23:39:37 +02:00

Add user icon field and update version number

This commit is contained in:
Sean Morley 2024-04-11 13:46:41 +00:00
parent a10f7485e0
commit 7decfd61e8
9 changed files with 249 additions and 3 deletions

View file

@ -0,0 +1 @@
ALTER TABLE "user" ADD COLUMN "icon" text;

View file

@ -0,0 +1,207 @@
{
"id": "d6cd08c8-9dc8-42df-aab9-0f5800602864",
"prevId": "1d83805d-6ee2-4dae-87a6-5af6f2d5add3",
"version": "5",
"dialect": "pg",
"tables": {
"featuredAdventures": {
"name": "featuredAdventures",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "serial",
"primaryKey": true,
"notNull": true
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": true
},
"location": {
"name": "location",
"type": "text",
"primaryKey": false,
"notNull": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"session": {
"name": "session",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"expires_at": {
"name": "expires_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true
}
},
"indexes": {},
"foreignKeys": {
"session_user_id_user_id_fk": {
"name": "session_user_id_user_id_fk",
"tableFrom": "session",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"sharedAdventures": {
"name": "sharedAdventures",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"data": {
"name": "data",
"type": "json",
"primaryKey": false,
"notNull": true
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"user": {
"name": "user",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"username": {
"name": "username",
"type": "text",
"primaryKey": false,
"notNull": true
},
"first_name": {
"name": "first_name",
"type": "text",
"primaryKey": false,
"notNull": true
},
"last_name": {
"name": "last_name",
"type": "text",
"primaryKey": false,
"notNull": true
},
"icon": {
"name": "icon",
"type": "text",
"primaryKey": false,
"notNull": false
},
"hashed_password": {
"name": "hashed_password",
"type": "varchar",
"primaryKey": false,
"notNull": true
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"userVisitedAdventures": {
"name": "userVisitedAdventures",
"schema": "",
"columns": {
"adventure_id": {
"name": "adventure_id",
"type": "serial",
"primaryKey": true,
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"adventure_name": {
"name": "adventure_name",
"type": "text",
"primaryKey": false,
"notNull": true
},
"location": {
"name": "location",
"type": "text",
"primaryKey": false,
"notNull": false
},
"visited_date": {
"name": "visited_date",
"type": "text",
"primaryKey": false,
"notNull": false
}
},
"indexes": {},
"foreignKeys": {
"userVisitedAdventures_user_id_user_id_fk": {
"name": "userVisitedAdventures_user_id_user_id_fk",
"tableFrom": "userVisitedAdventures",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "no action",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
}
},
"enums": {},
"schemas": {},
"_meta": {
"columns": {},
"schemas": {},
"tables": {}
}
}

View file

@ -71,6 +71,13 @@
"when": 1712407140727,
"tag": "0009_spotty_madame_web",
"breakpoints": true
},
{
"idx": 10,
"version": "5",
"when": 1712842196443,
"tag": "0010_lean_gamma_corps",
"breakpoints": true
}
]
}

View file

@ -1,6 +1,6 @@
{
"name": "adventurelog",
"version": "0.0.1",
"version": "0.1.0",
"description": "Embark, Explore, Remember. 🌍",
"private": true,
"scripts": {

View file

@ -2,7 +2,14 @@
import { enhance } from "$app/forms";
import { goto } from "$app/navigation";
export let user: any;
let firstLetter = user.first_name.charAt(0);
let icon: string = "";
if (user.icon != null && user.icon != "") {
icon = user.icon;
} else {
icon = user.username.charAt(0);
}
async function navToSettings() {
goto("/settings");
@ -15,7 +22,7 @@
<div class="dropdown dropdown-bottom dropdown-end" tabindex="0" role="button">
<div class="avatar placeholder">
<div class="bg-neutral text-neutral-content rounded-full w-10 ml-4">
<span class="text-2xl -mt-0.5">{firstLetter}</span>
<span class="text-2xl -mt-0.5">{icon}</span>
</div>
</div>
<!-- svelte-ignore a11y-missing-attribute -->
@ -26,6 +33,7 @@
>
<!-- svelte-ignore a11y-missing-attribute -->
<!-- svelte-ignore a11y-missing-attribute -->
<p class="text-lg ml-4 font-bold">Hi, {user.first_name} {user.last_name}</p>
<li><a>Profile</a></li>
<li><button on:click={navToLog}>My Log</button></li>
<li><button on:click={navToSettings}>Settings</button></li>

View file

@ -23,6 +23,7 @@ export const userTable = pgTable("user", {
username: text("username").notNull(),
first_name: text("first_name").notNull(),
last_name: text("last_name").notNull(),
icon: text("icon"),
hashed_password: varchar("hashed_password").notNull(),
});

View file

@ -19,6 +19,7 @@ export const lucia = new Lucia(adapter, {
id: attributes.id,
first_name: attributes.first_name,
last_name: attributes.last_name,
icon: attributes.icon,
};
},
});
@ -35,5 +36,6 @@ export interface DatabaseUser {
username: string;
first_name: string;
last_name: string;
icon: string;
hashed_password: string;
}

View file

@ -20,6 +20,7 @@ export const actions: Actions = {
let username = formData.get("username");
let firstName = formData.get("first_name");
let lastName = formData.get("last_name");
let icon = formData.get("icon");
let password = formData.get("password");
@ -32,6 +33,15 @@ export const actions: Actions = {
};
}
if (icon.length > 1) {
return {
status: 400,
body: {
message: "Icon must be a single character"
}
};
}
if (password) {
let hashedPassword = await new Argon2id().hash(password);
console.log(hashedPassword)
@ -47,6 +57,7 @@ export const actions: Actions = {
username: username,
first_name: firstName,
last_name: lastName,
icon: icon
})
.where(eq(userTable.id, userId));

View file

@ -6,6 +6,7 @@
let first_name = data.user?.first_name;
let last_name = data.user?.last_name;
let user_id = data.user?.id;
let icon = data.user?.icon;
</script>
<h1 class="text-center font-extrabold text-4xl mb-6">Settings Page</h1>
@ -37,6 +38,14 @@
id="last_name"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="icon">Profile Icon (emoji)</label>
<input
type="emoji"
bind:value={icon}
name="icon"
id="icon"
class="block mb-2 input input-bordered w-full max-w-xs"
/><br />
<label for="password">Password</label>
<input
type="password"