mirror of
https://github.com/kremalicious/umami.git
synced 2024-12-18 15:23:38 +01:00
Merge pull request #560 from beornf/master
Prisma Migrate with database seeding fixes #559
This commit is contained in:
commit
1ea1e06f9f
@ -56,7 +56,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/client": "2.18.0",
|
"@prisma/client": "2.19.0",
|
||||||
"@reduxjs/toolkit": "^1.5.0",
|
"@reduxjs/toolkit": "^1.5.0",
|
||||||
"bcrypt": "^5.0.0",
|
"bcrypt": "^5.0.0",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
@ -98,7 +98,6 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@formatjs/cli": "^2.13.16",
|
"@formatjs/cli": "^2.13.16",
|
||||||
"@prisma/cli": "2.18.0",
|
|
||||||
"@rollup/plugin-buble": "^0.21.3",
|
"@rollup/plugin-buble": "^0.21.3",
|
||||||
"@rollup/plugin-node-resolve": "^11.1.1",
|
"@rollup/plugin-node-resolve": "^11.1.1",
|
||||||
"@rollup/plugin-replace": "^2.3.4",
|
"@rollup/plugin-replace": "^2.3.4",
|
||||||
@ -121,6 +120,7 @@
|
|||||||
"postcss-preset-env": "^6.7.0",
|
"postcss-preset-env": "^6.7.0",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.2.1",
|
||||||
"prettier-eslint": "^12.0.0",
|
"prettier-eslint": "^12.0.0",
|
||||||
|
"prisma": "2.19.0",
|
||||||
"rollup": "^2.38.3",
|
"rollup": "^2.38.3",
|
||||||
"rollup-plugin-hashbang": "^2.2.2",
|
"rollup-plugin-hashbang": "^2.2.2",
|
||||||
"rollup-plugin-terser": "^7.0.2",
|
"rollup-plugin-terser": "^7.0.2",
|
||||||
|
99
prisma/mysql/migrations/20210320112658_init/migration.sql
Normal file
99
prisma/mysql/migrations/20210320112658_init/migration.sql
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `account` (
|
||||||
|
`user_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`username` VARCHAR(255) NOT NULL,
|
||||||
|
`password` VARCHAR(60) NOT NULL,
|
||||||
|
`is_admin` BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`updated_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
UNIQUE INDEX `account.username_unique`(`username`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`user_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `event` (
|
||||||
|
`event_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`session_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`url` VARCHAR(500) NOT NULL,
|
||||||
|
`event_type` VARCHAR(50) NOT NULL,
|
||||||
|
`event_value` VARCHAR(50) NOT NULL,
|
||||||
|
INDEX `event_created_at_idx`(`created_at`),
|
||||||
|
INDEX `event_session_id_idx`(`session_id`),
|
||||||
|
INDEX `event_website_id_idx`(`website_id`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`event_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `pageview` (
|
||||||
|
`view_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`session_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`url` VARCHAR(500) NOT NULL,
|
||||||
|
`referrer` VARCHAR(500),
|
||||||
|
INDEX `pageview_created_at_idx`(`created_at`),
|
||||||
|
INDEX `pageview_session_id_idx`(`session_id`),
|
||||||
|
INDEX `pageview_website_id_created_at_idx`(`website_id`, `created_at`),
|
||||||
|
INDEX `pageview_website_id_idx`(`website_id`),
|
||||||
|
INDEX `pageview_website_id_session_id_created_at_idx`(`website_id`, `session_id`, `created_at`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`view_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `session` (
|
||||||
|
`session_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`session_uuid` VARCHAR(36) NOT NULL,
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
`hostname` VARCHAR(100),
|
||||||
|
`browser` VARCHAR(20),
|
||||||
|
`os` VARCHAR(20),
|
||||||
|
`device` VARCHAR(20),
|
||||||
|
`screen` VARCHAR(11),
|
||||||
|
`language` VARCHAR(35),
|
||||||
|
`country` CHAR(2),
|
||||||
|
UNIQUE INDEX `session.session_uuid_unique`(`session_uuid`),
|
||||||
|
INDEX `session_created_at_idx`(`created_at`),
|
||||||
|
INDEX `session_website_id_idx`(`website_id`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`session_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE `website` (
|
||||||
|
`website_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||||
|
`website_uuid` VARCHAR(36) NOT NULL,
|
||||||
|
`user_id` INTEGER UNSIGNED NOT NULL,
|
||||||
|
`name` VARCHAR(100) NOT NULL,
|
||||||
|
`domain` VARCHAR(500),
|
||||||
|
`share_id` VARCHAR(64),
|
||||||
|
`created_at` TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(0),
|
||||||
|
UNIQUE INDEX `website.website_uuid_unique`(`website_uuid`),
|
||||||
|
UNIQUE INDEX `website.share_id_unique`(`share_id`),
|
||||||
|
INDEX `website_user_id_idx`(`user_id`),
|
||||||
|
|
||||||
|
PRIMARY KEY (`website_id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `event` ADD FOREIGN KEY (`session_id`) REFERENCES `session`(`session_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `event` ADD FOREIGN KEY (`website_id`) REFERENCES `website`(`website_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `pageview` ADD FOREIGN KEY (`session_id`) REFERENCES `session`(`session_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `pageview` ADD FOREIGN KEY (`website_id`) REFERENCES `website`(`website_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `session` ADD FOREIGN KEY (`website_id`) REFERENCES `website`(`website_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `website` ADD FOREIGN KEY (`user_id`) REFERENCES `account`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
3
prisma/mysql/migrations/migration_lock.toml
Normal file
3
prisma/mysql/migrations/migration_lock.toml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Please do not edit this file manually
|
||||||
|
# It should be added in your version-control system (i.e. Git)
|
||||||
|
provider = "mysql"
|
1
prisma/mysql/schema.mysql.prisma
Symbolic link
1
prisma/mysql/schema.mysql.prisma
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../schema.mysql.prisma
|
1
prisma/mysql/seed.js
Symbolic link
1
prisma/mysql/seed.js
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../seed.js
|
129
prisma/postgresql/migrations/20210320112717_init/migration.sql
Normal file
129
prisma/postgresql/migrations/20210320112717_init/migration.sql
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "account" (
|
||||||
|
"user_id" SERIAL NOT NULL,
|
||||||
|
"username" VARCHAR(255) NOT NULL,
|
||||||
|
"password" VARCHAR(60) NOT NULL,
|
||||||
|
"is_admin" BOOLEAN NOT NULL DEFAULT false,
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"updated_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
PRIMARY KEY ("user_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 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_type" VARCHAR(50) NOT NULL,
|
||||||
|
"event_value" VARCHAR(50) NOT NULL,
|
||||||
|
|
||||||
|
PRIMARY KEY ("event_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "pageview" (
|
||||||
|
"view_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,
|
||||||
|
"referrer" VARCHAR(500),
|
||||||
|
|
||||||
|
PRIMARY KEY ("view_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "session" (
|
||||||
|
"session_id" SERIAL NOT NULL,
|
||||||
|
"session_uuid" UUID NOT NULL,
|
||||||
|
"website_id" INTEGER NOT NULL,
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
"hostname" VARCHAR(100),
|
||||||
|
"browser" VARCHAR(20),
|
||||||
|
"os" VARCHAR(20),
|
||||||
|
"device" VARCHAR(20),
|
||||||
|
"screen" VARCHAR(11),
|
||||||
|
"language" VARCHAR(35),
|
||||||
|
"country" CHAR(2),
|
||||||
|
|
||||||
|
PRIMARY KEY ("session_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "website" (
|
||||||
|
"website_id" SERIAL NOT NULL,
|
||||||
|
"website_uuid" UUID NOT NULL,
|
||||||
|
"user_id" INTEGER NOT NULL,
|
||||||
|
"name" VARCHAR(100) NOT NULL,
|
||||||
|
"domain" VARCHAR(500),
|
||||||
|
"share_id" VARCHAR(64),
|
||||||
|
"created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
|
||||||
|
PRIMARY KEY ("website_id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "account.username_unique" ON "account"("username");
|
||||||
|
|
||||||
|
-- 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");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_created_at_idx" ON "pageview"("created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_session_id_idx" ON "pageview"("session_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_website_id_created_at_idx" ON "pageview"("website_id", "created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_website_id_idx" ON "pageview"("website_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "pageview_website_id_session_id_created_at_idx" ON "pageview"("website_id", "session_id", "created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "session.session_uuid_unique" ON "session"("session_uuid");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "session_created_at_idx" ON "session"("created_at");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "session_website_id_idx" ON "session"("website_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "website.website_uuid_unique" ON "website"("website_uuid");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "website.share_id_unique" ON "website"("share_id");
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE INDEX "website_user_id_idx" ON "website"("user_id");
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "event" ADD FOREIGN KEY ("session_id") REFERENCES "session"("session_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "event" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "pageview" ADD FOREIGN KEY ("session_id") REFERENCES "session"("session_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "pageview" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "session" ADD FOREIGN KEY ("website_id") REFERENCES "website"("website_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "website" ADD FOREIGN KEY ("user_id") REFERENCES "account"("user_id") ON DELETE CASCADE ON UPDATE CASCADE;
|
3
prisma/postgresql/migrations/migration_lock.toml
Normal file
3
prisma/postgresql/migrations/migration_lock.toml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Please do not edit this file manually
|
||||||
|
# It should be added in your version-control system (i.e. Git)
|
||||||
|
provider = "postgresql"
|
1
prisma/postgresql/schema.postgresql.prisma
Symbolic link
1
prisma/postgresql/schema.postgresql.prisma
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../schema.postgresql.prisma
|
1
prisma/postgresql/seed.js
Symbolic link
1
prisma/postgresql/seed.js
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../seed.js
|
@ -8,23 +8,23 @@ datasource db {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model account {
|
model account {
|
||||||
user_id Int @default(autoincrement()) @id
|
user_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
username String @unique
|
username String @unique @db.VarChar(255)
|
||||||
password String
|
password String @db.VarChar(60)
|
||||||
is_admin Boolean @default(false)
|
is_admin Boolean @default(false)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
updated_at DateTime? @default(now())
|
updated_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
website website[]
|
website website[]
|
||||||
}
|
}
|
||||||
|
|
||||||
model event {
|
model event {
|
||||||
event_id Int @default(autoincrement()) @id
|
event_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
website_id Int
|
website_id Int @db.UnsignedInt
|
||||||
session_id Int
|
session_id Int @db.UnsignedInt
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
event_type String
|
event_type String @db.VarChar(50)
|
||||||
event_value String
|
event_value String @db.VarChar(50)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@ -34,32 +34,34 @@ model event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model pageview {
|
model pageview {
|
||||||
view_id Int @default(autoincrement()) @id
|
view_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
website_id Int
|
website_id Int @db.UnsignedInt
|
||||||
session_id Int
|
session_id Int @db.UnsignedInt
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
referrer String?
|
referrer String? @db.VarChar(500)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@@index([created_at], name: "pageview_created_at_idx")
|
@@index([created_at], name: "pageview_created_at_idx")
|
||||||
@@index([session_id], name: "pageview_session_id_idx")
|
@@index([session_id], name: "pageview_session_id_idx")
|
||||||
|
@@index([website_id, created_at], name: "pageview_website_id_created_at_idx")
|
||||||
@@index([website_id], name: "pageview_website_id_idx")
|
@@index([website_id], name: "pageview_website_id_idx")
|
||||||
|
@@index([website_id, session_id, created_at], name: "pageview_website_id_session_id_created_at_idx")
|
||||||
}
|
}
|
||||||
|
|
||||||
model session {
|
model session {
|
||||||
session_id Int @default(autoincrement()) @id
|
session_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
session_uuid String @unique
|
session_uuid String @unique @db.VarChar(36)
|
||||||
website_id Int
|
website_id Int @db.UnsignedInt
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
hostname String?
|
hostname String? @db.VarChar(100)
|
||||||
browser String?
|
browser String? @db.VarChar(20)
|
||||||
os String?
|
os String? @db.VarChar(20)
|
||||||
device String?
|
device String? @db.VarChar(20)
|
||||||
screen String?
|
screen String? @db.VarChar(11)
|
||||||
language String?
|
language String? @db.VarChar(35)
|
||||||
country String?
|
country String? @db.Char(2)
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
@ -69,13 +71,13 @@ model session {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model website {
|
model website {
|
||||||
website_id Int @default(autoincrement()) @id
|
website_id Int @id @default(autoincrement()) @db.UnsignedInt
|
||||||
website_uuid String @unique
|
website_uuid String @unique @db.VarChar(36)
|
||||||
user_id Int
|
user_id Int @db.UnsignedInt
|
||||||
name String
|
name String @db.VarChar(100)
|
||||||
domain String?
|
domain String? @db.VarChar(500)
|
||||||
created_at DateTime? @default(now())
|
share_id String? @unique @db.VarChar(64)
|
||||||
share_id String? @unique
|
created_at DateTime? @default(now()) @db.Timestamp(0)
|
||||||
account account @relation(fields: [user_id], references: [user_id])
|
account account @relation(fields: [user_id], references: [user_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
|
@ -8,23 +8,23 @@ datasource db {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model account {
|
model account {
|
||||||
user_id Int @default(autoincrement()) @id
|
user_id Int @id @default(autoincrement())
|
||||||
username String @unique
|
username String @unique @db.VarChar(255)
|
||||||
password String
|
password String @db.VarChar(60)
|
||||||
is_admin Boolean @default(false)
|
is_admin Boolean @default(false)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
updated_at DateTime? @default(now())
|
updated_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
website website[]
|
website website[]
|
||||||
}
|
}
|
||||||
|
|
||||||
model event {
|
model event {
|
||||||
event_id Int @default(autoincrement()) @id
|
event_id Int @id @default(autoincrement())
|
||||||
website_id Int
|
website_id Int
|
||||||
session_id Int
|
session_id Int
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
event_type String
|
event_type String @db.VarChar(50)
|
||||||
event_value String
|
event_value String @db.VarChar(50)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@ -34,32 +34,34 @@ model event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model pageview {
|
model pageview {
|
||||||
view_id Int @default(autoincrement()) @id
|
view_id Int @id @default(autoincrement())
|
||||||
website_id Int
|
website_id Int
|
||||||
session_id Int
|
session_id Int
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
url String
|
url String @db.VarChar(500)
|
||||||
referrer String?
|
referrer String? @db.VarChar(500)
|
||||||
session session @relation(fields: [session_id], references: [session_id])
|
session session @relation(fields: [session_id], references: [session_id])
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
|
|
||||||
@@index([created_at], name: "pageview_created_at_idx")
|
@@index([created_at], name: "pageview_created_at_idx")
|
||||||
@@index([session_id], name: "pageview_session_id_idx")
|
@@index([session_id], name: "pageview_session_id_idx")
|
||||||
|
@@index([website_id, created_at], name: "pageview_website_id_created_at_idx")
|
||||||
@@index([website_id], name: "pageview_website_id_idx")
|
@@index([website_id], name: "pageview_website_id_idx")
|
||||||
|
@@index([website_id, session_id, created_at], name: "pageview_website_id_session_id_created_at_idx")
|
||||||
}
|
}
|
||||||
|
|
||||||
model session {
|
model session {
|
||||||
session_id Int @default(autoincrement()) @id
|
session_id Int @id @default(autoincrement())
|
||||||
session_uuid String @unique
|
session_uuid String @unique @db.Uuid
|
||||||
website_id Int
|
website_id Int
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
hostname String?
|
hostname String? @db.VarChar(100)
|
||||||
browser String?
|
browser String? @db.VarChar(20)
|
||||||
os String?
|
os String? @db.VarChar(20)
|
||||||
screen String?
|
device String? @db.VarChar(20)
|
||||||
language String?
|
screen String? @db.VarChar(11)
|
||||||
country String?
|
language String? @db.VarChar(35)
|
||||||
device String?
|
country String? @db.Char(2)
|
||||||
website website @relation(fields: [website_id], references: [website_id])
|
website website @relation(fields: [website_id], references: [website_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
@ -69,13 +71,13 @@ model session {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model website {
|
model website {
|
||||||
website_id Int @default(autoincrement()) @id
|
website_id Int @id @default(autoincrement())
|
||||||
website_uuid String @unique
|
website_uuid String @unique @db.Uuid
|
||||||
name String
|
|
||||||
created_at DateTime? @default(now())
|
|
||||||
user_id Int
|
user_id Int
|
||||||
domain String?
|
name String @db.VarChar(100)
|
||||||
share_id String? @unique
|
domain String? @db.VarChar(500)
|
||||||
|
share_id String? @unique @db.VarChar(64)
|
||||||
|
created_at DateTime? @default(now()) @db.Timestamptz(6)
|
||||||
account account @relation(fields: [user_id], references: [user_id])
|
account account @relation(fields: [user_id], references: [user_id])
|
||||||
event event[]
|
event event[]
|
||||||
pageview pageview[]
|
pageview pageview[]
|
||||||
|
30
prisma/seed.js
Normal file
30
prisma/seed.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
const bcrypt = require('bcrypt');
|
||||||
|
const { PrismaClient } = require('@prisma/client');
|
||||||
|
const prisma = new PrismaClient();
|
||||||
|
const SALT_ROUNDS = 10;
|
||||||
|
|
||||||
|
const hashPassword = password => {
|
||||||
|
return bcrypt.hash(password, SALT_ROUNDS);
|
||||||
|
};
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const password = await hashPassword(process.env.ADMIN_PASSWORD || 'umami');
|
||||||
|
await prisma.account.upsert({
|
||||||
|
where: { username: 'admin' },
|
||||||
|
update: {},
|
||||||
|
create: {
|
||||||
|
username: 'admin',
|
||||||
|
password: password,
|
||||||
|
is_admin: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
.catch(e => {
|
||||||
|
console.error(e);
|
||||||
|
process.exit(1);
|
||||||
|
})
|
||||||
|
.finally(async () => {
|
||||||
|
await prisma.$disconnect();
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user