refactor table drop

This commit is contained in:
Brian Cao 2022-08-01 12:22:17 -07:00
parent 8f934c7e6c
commit 7b0d6af147
4 changed files with 108 additions and 55 deletions

View File

@ -1,5 +1,46 @@
-- AlterTable
ALTER TABLE `event` ADD COLUMN `event_name` VARCHAR(50) NULL;
-- DropForeignKey
alter table `event` drop foreign key `event_ibfk_1`;
alter table `event` drop foreign key `event_ibfk_2`;
drop index `event_created_at_idx` on `event`;
drop index `event_session_id_idx` on `event`;
drop index `event_website_id_idx` on `event`;
create index `event_old_created_at_idx` on `event` (created_at);
create index `event_old_session_id_idx` on `event` (session_id);
create index `event_old_website_id_idx` on `event` (website_id);
-- RenameTable
rename table `event` to `_event_old`;
-- CreateTable
create table `event`
(
event_id int unsigned auto_increment
primary key,
website_id int unsigned not null,
session_id int unsigned not null,
created_at timestamp default CURRENT_TIMESTAMP null,
url varchar(500) not null,
event_name varchar(50) NOT NULL,
constraint event_ibfk_1
foreign key (website_id) references `website` (website_id)
on delete cascade,
constraint event_ibfk_2
foreign key (session_id) references `session` (session_id)
on delete cascade
)
collate = utf8mb4_unicode_ci;
create index `event_created_at_idx`
on `event` (created_at);
create index `event_session_id_idx`
on `event` (session_id);
create index `event_website_id_idx`
on `event` (website_id);
-- CreateTable
CREATE TABLE `event_data` (
@ -24,25 +65,4 @@ ALTER TABLE `session` RENAME INDEX `session_uuid` TO `session_session_uuid_key`;
ALTER TABLE `website` RENAME INDEX `share_id` TO `website_share_id_key`;
-- RenameIndex
ALTER TABLE `website` RENAME INDEX `website_uuid` TO `website_website_uuid_key`;
/*
Warnings:
- You are about to drop the column `event_type` on the `event` table. All the data in the column will be lost.
- You are about to drop the column `event_value` on the `event` table. All the data in the column will be lost.
*/
-- Populate event_name
update `event`
set event_name = event_value;
-- Set event_name not null
ALTER TABLE `event`
MODIFY `event_name` VARCHAR(50) NOT NULL;
-- Drop old columns
ALTER TABLE `event`
DROP COLUMN `event_type`,
DROP COLUMN `event_value`;
ALTER TABLE `website` RENAME INDEX `website_uuid` TO `website_website_uuid_key`;

View File

@ -34,10 +34,10 @@ model event {
}
model event_data {
id Int @id @default(autoincrement()) @map("event_data_id")
eventId Int @unique @map("event_id") @db.UnsignedInt
eventData Json @map("event_data")
event event @relation(fields: [eventId], references: [event_id])
event_data_id Int @id @default(autoincrement())
event_id Int @unique @db.UnsignedInt
event_data Json
event event @relation(fields: [event_id], references: [event_id])
}
model pageview {

View File

@ -1,5 +1,42 @@
-- AlterTable
ALTER TABLE event RENAME TO event_old;
-- DropForeignKey
ALTER TABLE "event" DROP CONSTRAINT "event_session_id_fkey";
ALTER TABLE "event" DROP CONSTRAINT "event_website_id_fkey";
-- RenameIndex
ALTER INDEX "event_pkey" RENAME TO "event_old_pkey";
ALTER INDEX "event_created_at_idx" RENAME TO "event_old_created_at_idx";
ALTER INDEX "event_session_id_idx" RENAME TO "event_old_session_id_idx";
ALTER INDEX "event_website_id_idx" RENAME TO "event_old_website_id_idx";
-- RenameTable
ALTER TABLE "event" RENAME TO "_event_old";
-- CreateTable
CREATE TABLE "event" (
"event_id" SERIAL NOT NULL,
"website_id" INTEGER NOT NULL,
"session_id" INTEGER NOT NULL,
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
"url" VARCHAR(500) NOT NULL,
"event_name" VARCHAR(50) NOT NULL,
PRIMARY KEY ("event_id")
);
-- CreateIndex
CREATE INDEX "event_created_at_idx" ON "event"("created_at");
-- CreateIndex
CREATE INDEX "event_session_id_idx" ON "event"("session_id");
-- CreateIndex
CREATE INDEX "event_website_id_idx" ON "event"("website_id");
-- AddForeignKey
ALTER TABLE "event" ADD CONSTRAINT "event_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "session"("session_id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "event" ADD CONSTRAINT "event_website_id_fkey" FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE;
-- CreateTable
CREATE TABLE "event_data" (
@ -26,22 +63,4 @@ ALTER INDEX "session.session_uuid_unique" RENAME TO "session_session_uuid_key";
ALTER INDEX "website.share_id_unique" RENAME TO "website_share_id_key";
-- RenameIndex
ALTER INDEX "website.website_uuid_unique" RENAME TO "website_website_uuid_key";
/*
Warnings:
- You are about to drop the column `event_type` on the `event` table. All the data in the column will be lost.
- You are about to drop the column `event_value` on the `event` table. All the data in the column will be lost.
*/
-- Populate event_name
update event
set "event_name" = event.event_value;
-- Set event_name not null
ALTER TABLE "event" ALTER COLUMN "event_name" SET NOT NULL;
-- Drop old columns
ALTER TABLE "event" DROP COLUMN "event_type",
DROP COLUMN "event_value";
ALTER INDEX "website.website_uuid_unique" RENAME TO "website_website_uuid_key";

View File

@ -33,11 +33,25 @@ model event {
@@index([website_id])
}
model event_old {
event_id Int @id @default(autoincrement())
website_id Int
session_id Int
created_at DateTime? @default(now()) @db.Timestamptz(6)
url String @db.VarChar(500)
event_type String @db.VarChar(50)
event_value String @db.VarChar(50)
@@index([created_at])
@@index([session_id])
@@index([website_id])
}
model event_data {
id Int @id @default(autoincrement()) @map("event_data_id")
eventId Int @unique @map("event_id")
eventData Json @map("event_data")
event event @relation(fields: [eventId], references: [event_id])
id Int @id @default(autoincrement())
event_id Int @unique
event_data Json
event event @relation(fields: [event_id], references: [event_id])
}
model pageview {
@ -70,8 +84,8 @@ model session {
language String? @db.VarChar(35)
country String? @db.Char(2)
website website @relation(fields: [website_id], references: [website_id], onDelete: Cascade)
event event[]
pageview pageview[]
event event[]
@@index([created_at])
@@index([website_id])
@ -86,9 +100,9 @@ model website {
share_id String? @unique @db.VarChar(64)
created_at DateTime? @default(now()) @db.Timestamptz(6)
account account @relation(fields: [user_id], references: [user_id], onDelete: Cascade)
event event[]
pageview pageview[]
session session[]
event event[]
@@index([user_id])
}