Umstellung auf Date

This commit is contained in:
Andreas Knuth 2025-02-07 17:23:26 -06:00
parent 5b475f197a
commit 5eee7c9ac4
5 changed files with 51 additions and 37 deletions

View File

@ -18,7 +18,9 @@ export class DrizzleService {
// }, // },
// }, // },
// }); // });
this.db = drizzle('postgresql://haiky:xieng7Seih@localhost:15432/haiky', {
this.db = drizzle(process.env['DATABASE_URL']!, {
//this.db = drizzle('postgresql://haiky:xieng7Seih@localhost:15432/haiky', {
logger: { logger: {
logQuery: (query: string, params: any[]) => { logQuery: (query: string, params: any[]) => {
this.sqlLogger.logQuery(query, params); this.sqlLogger.logQuery(query, params);
@ -91,7 +93,7 @@ export class DrizzleService {
.update(deck) .update(deck)
.set({ .set({
deckname: newDeckname, deckname: newDeckname,
updated: sql`CURRENT_TIMESTAMP`, // Setze 'updated' auf CURRENT_TIMESTAMP updated: new Date(), // Setze 'updated' auf CURRENT_TIMESTAMP
}) })
.where(and(eq(deck.deckname, oldDeckname), eq(deck.user, user.email))); .where(and(eq(deck.deckname, oldDeckname), eq(deck.user, user.email)));
return { status: 'success', message: 'Deck renamed successfully' }; return { status: 'success', message: 'Deck renamed successfully' };
@ -152,7 +154,7 @@ export class DrizzleService {
x2: box.x2, x2: box.x2,
y1: box.y1, y1: box.y1,
y2: box.y2, y2: box.y2,
updated: sql`CURRENT_TIMESTAMP`, // Setze 'updated' auf CURRENT_TIMESTAMP updated: new Date(), // Setze 'updated' auf CURRENT_TIMESTAMP
}) })
.where(and(eq(deck.user, user.email), eq(deck.bildid, data.bildid), eq(deck.deckname, data.deckname), eq(deck.id, box.id!!))); .where(and(eq(deck.user, user.email), eq(deck.bildid, data.bildid), eq(deck.deckname, data.deckname), eq(deck.id, box.id!!)));
if (result.rowsAffected === 0) { if (result.rowsAffected === 0) {
@ -185,8 +187,7 @@ export class DrizzleService {
const affectedDecks = await this.db const affectedDecks = await this.db
.select({ deckname: deck.deckname }) .select({ deckname: deck.deckname })
.from(deck) .from(deck)
.where(and(eq(deck.bildid, bildid), eq(deck.user, user.email))) .where(and(eq(deck.bildid, bildid), eq(deck.user, user.email)));
.all();
if (affectedDecks.length === 0) { if (affectedDecks.length === 0) {
throw new HttpException('No entries found for the given image ID', HttpStatus.NOT_FOUND); throw new HttpException('No entries found for the given image ID', HttpStatus.NOT_FOUND);
@ -207,8 +208,7 @@ export class DrizzleService {
const existingImages = await this.db const existingImages = await this.db
.select() .select()
.from(deck) .from(deck)
.where(and(eq(deck.bildid, bildid), eq(deck.user, user.email))) .where(and(eq(deck.bildid, bildid), eq(deck.user, user.email)));
.all();
if (existingImages.length === 0) { if (existingImages.length === 0) {
throw new HttpException('No entries found for the given image ID', HttpStatus.NOT_FOUND); throw new HttpException('No entries found for the given image ID', HttpStatus.NOT_FOUND);
@ -218,7 +218,7 @@ export class DrizzleService {
.update(deck) .update(deck)
.set({ .set({
deckname: targetDeckId, deckname: targetDeckId,
updated: sql`CURRENT_TIMESTAMP`, // Setze 'updated' auf CURRENT_TIMESTAMP updated: new Date(), // Setze 'updated' auf CURRENT_TIMESTAMP
}) })
.where(and(eq(deck.bildid, bildid), eq(deck.user, user.email))); .where(and(eq(deck.bildid, bildid), eq(deck.user, user.email)));
@ -236,16 +236,11 @@ export class DrizzleService {
throw new HttpException('Deck not found', HttpStatus.NOT_FOUND); throw new HttpException('Deck not found', HttpStatus.NOT_FOUND);
} }
// const existingNewDeck = await this.getDeckByName(newDeckname, user);
// if (existingNewDeck.length > 0) {
// throw new HttpException('Deck with the new name already exists', HttpStatus.CONFLICT);
// }
await this.db await this.db
.update(deck) .update(deck)
.set({ .set({
bildname: newImagename, bildname: newImagename,
updated: sql`CURRENT_TIMESTAMP`, // Setze 'updated' auf CURRENT_TIMESTAMP updated: new Date(), // Setze 'updated' auf CURRENT_TIMESTAMP
}) })
.where(and(eq(deck.bildid, bildId), eq(deck.user, user.email))); .where(and(eq(deck.bildid, bildId), eq(deck.user, user.email)));
return { status: 'success', message: 'Image Entries renamed successfully' }; return { status: 'success', message: 'Image Entries renamed successfully' };
@ -262,6 +257,7 @@ export class DrizzleService {
reps?: number; reps?: number;
lapses?: number; lapses?: number;
isGraduated?: boolean; isGraduated?: boolean;
inserted?: string;
}, },
user: User, user: User,
) { ) {
@ -269,7 +265,8 @@ export class DrizzleService {
if (typeof data.isGraduated === 'boolean') { if (typeof data.isGraduated === 'boolean') {
updateData.isGraduated = Number(data.isGraduated); updateData.isGraduated = Number(data.isGraduated);
} }
updateData.updated = sql`CURRENT_TIMESTAMP`; // Setze 'updated' auf CURRENT_TIMESTAMP updateData.updated = new Date(); //sql`CURRENT_TIMESTAMP`; // Setze 'updated' auf CURRENT_TIMESTAMP
updateData.inserted = new Date(data.inserted as string);
const result = await this.db const result = await this.db
.update(deck) .update(deck)

View File

@ -1,4 +1,3 @@
import { sql } from 'drizzle-orm';
import * as t from 'drizzle-orm/pg-core'; import * as t from 'drizzle-orm/pg-core';
import { pgEnum, pgTable as table } from 'drizzle-orm/pg-core'; import { pgEnum, pgTable as table } from 'drizzle-orm/pg-core';
@ -22,8 +21,8 @@ export const deck = table(
lapses: t.integer('lapses'), lapses: t.integer('lapses'),
isGraduated: t.integer('isgraduated'), isGraduated: t.integer('isgraduated'),
user: t.varchar('user').notNull(), user: t.varchar('user').notNull(),
inserted: t.varchar().default(sql`(CURRENT_TIMESTAMP)`), // Neue Spalte inserted: t.timestamp('inserted', { mode: 'date' }).defaultNow(),
updated: t.varchar().default(sql`(CURRENT_TIMESTAMP)`), // Neue Spalte updated: t.timestamp('updated', { mode: 'date' }).defaultNow(),
}, },
table => [t.uniqueIndex('deck_idx').on(table.id)], table => [t.uniqueIndex('deck_idx').on(table.id)],
); );
@ -35,6 +34,8 @@ export const users = table(
email: t.varchar().notNull(), email: t.varchar().notNull(),
role: rolesEnum().default('guest'), role: rolesEnum().default('guest'),
sign_in_provider: t.varchar('sign_in_provider', { length: 50 }), sign_in_provider: t.varchar('sign_in_provider', { length: 50 }),
inserted: t.timestamp('inserted', { mode: 'date' }).defaultNow(),
updated: t.timestamp('updated', { mode: 'date' }).defaultNow(),
}, },
table => [t.uniqueIndex('users_idx').on(table.id)], table => [t.uniqueIndex('users_idx').on(table.id)],
); );

View File

@ -1,6 +1,6 @@
CREATE TYPE "public"."roles" AS ENUM('admin', 'guest', 'pro');--> statement-breakpoint CREATE TYPE "public"."roles" AS ENUM('admin', 'guest', 'pro');--> statement-breakpoint
CREATE TABLE "Deck" ( CREATE TABLE "deck" (
"id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "Deck_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1), "id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "deck_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),
"deckname" varchar NOT NULL, "deckname" varchar NOT NULL,
"bildname" varchar, "bildname" varchar,
"bildid" varchar, "bildid" varchar,
@ -13,10 +13,10 @@ CREATE TABLE "Deck" (
"factor" real, "factor" real,
"reps" integer, "reps" integer,
"lapses" integer, "lapses" integer,
"isGraduated" integer, "isgraduated" integer,
"user" varchar NOT NULL, "user" varchar NOT NULL,
"inserted" varchar DEFAULT (CURRENT_TIMESTAMP), "inserted" timestamp DEFAULT now(),
"updated" varchar DEFAULT (CURRENT_TIMESTAMP) "updated" timestamp DEFAULT now()
); );
--> statement-breakpoint --> statement-breakpoint
CREATE TABLE "users" ( CREATE TABLE "users" (
@ -24,8 +24,10 @@ CREATE TABLE "users" (
"name" varchar(256), "name" varchar(256),
"email" varchar NOT NULL, "email" varchar NOT NULL,
"role" "roles" DEFAULT 'guest', "role" "roles" DEFAULT 'guest',
"sign_in_provider" varchar(50) "sign_in_provider" varchar(50),
"inserted" timestamp DEFAULT now(),
"updated" timestamp DEFAULT now()
); );
--> statement-breakpoint --> statement-breakpoint
CREATE UNIQUE INDEX "deck_idx" ON "Deck" USING btree ("id");--> statement-breakpoint CREATE UNIQUE INDEX "deck_idx" ON "deck" USING btree ("id");--> statement-breakpoint
CREATE UNIQUE INDEX "users_idx" ON "users" USING btree ("id"); CREATE UNIQUE INDEX "users_idx" ON "users" USING btree ("id");

View File

@ -1,11 +1,11 @@
{ {
"id": "ad8762e3-d7ad-4605-b2fc-b10a0de0f08a", "id": "5c983d57-b2f3-4fb4-b99e-066574c486e3",
"prevId": "00000000-0000-0000-0000-000000000000", "prevId": "00000000-0000-0000-0000-000000000000",
"version": "7", "version": "7",
"dialect": "postgresql", "dialect": "postgresql",
"tables": { "tables": {
"public.Deck": { "public.deck": {
"name": "Deck", "name": "deck",
"schema": "", "schema": "",
"columns": { "columns": {
"id": { "id": {
@ -15,7 +15,7 @@
"notNull": true, "notNull": true,
"identity": { "identity": {
"type": "always", "type": "always",
"name": "Deck_id_seq", "name": "deck_id_seq",
"schema": "public", "schema": "public",
"increment": "1", "increment": "1",
"startWith": "1", "startWith": "1",
@ -97,8 +97,8 @@
"primaryKey": false, "primaryKey": false,
"notNull": false "notNull": false
}, },
"isGraduated": { "isgraduated": {
"name": "isGraduated", "name": "isgraduated",
"type": "integer", "type": "integer",
"primaryKey": false, "primaryKey": false,
"notNull": false "notNull": false
@ -111,17 +111,17 @@
}, },
"inserted": { "inserted": {
"name": "inserted", "name": "inserted",
"type": "varchar", "type": "timestamp",
"primaryKey": false, "primaryKey": false,
"notNull": false, "notNull": false,
"default": "(CURRENT_TIMESTAMP)" "default": "now()"
}, },
"updated": { "updated": {
"name": "updated", "name": "updated",
"type": "varchar", "type": "timestamp",
"primaryKey": false, "primaryKey": false,
"notNull": false, "notNull": false,
"default": "(CURRENT_TIMESTAMP)" "default": "now()"
} }
}, },
"indexes": { "indexes": {
@ -194,6 +194,20 @@
"type": "varchar(50)", "type": "varchar(50)",
"primaryKey": false, "primaryKey": false,
"notNull": false "notNull": false
},
"inserted": {
"name": "inserted",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"default": "now()"
},
"updated": {
"name": "updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"default": "now()"
} }
}, },
"indexes": { "indexes": {

View File

@ -5,8 +5,8 @@
{ {
"idx": 0, "idx": 0,
"version": "7", "version": "7",
"when": 1738881267759, "when": 1738963581892,
"tag": "0000_dapper_the_watchers", "tag": "0000_known_stepford_cuckoos",
"breakpoints": true "breakpoints": true
} }
] ]