Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Event price field #51

Draft
wants to merge 3 commits into
base: staging
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions prisma/data/ticket-categories.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[
{
"sequence": 1,
"symbol": "FREE",
"name": "Free"
},
{
"sequence": 2,
"symbol": "PAID",
"name": "Paid"
}
]
41 changes: 41 additions & 0 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,9 @@ model Event {
dateTimeStart DateTime @default(now())
dateTimeEnd DateTime @default(now())

ticketCategoryId String?
tikcetCategory TicketCategory? @relation(fields: [ticketCategoryId], references: [id], onUpdate: Cascade, onDelete: Cascade)

statusId String
status EventStatus @relation(fields: [statusId], references: [id])

Expand All @@ -260,6 +263,8 @@ model Event {
imageId String?
image EventImage? @relation(fields: [imageId], references: [id])

tickets Ticket[]

organizerId String
organizer User @relation("EventOrganizer", fields: [organizerId], references: [id])
applicants User[] @relation("EventApplicant")
Expand All @@ -273,6 +278,7 @@ model Event {
@@index([locationId])
@@index([formatId])
@@index([categoryId])
@@index([ticketCategoryId])
@@index([mediaId])
@@index([organizerId])
}
Expand Down Expand Up @@ -364,6 +370,41 @@ model Location {
updatedAt DateTime @updatedAt
}

// -----------------------------------------------------------------------------
// Ticket Category
// -----------------------------------------------------------------------------

model TicketCategory {
id String @id @default(cuid())

sequence Int? @unique // 1, 2, 3, ...
symbol String @unique // FREE, PAID
name String @unique // Free, Paid
description String? @db.Text // Long description

events Event[]
}

// -----------------------------------------------------------------------------
// Ticket
// -----------------------------------------------------------------------------

model Ticket {
id String @id @default(cuid())

name String // name of ticket like student ticket, general ticket, full ticket etc
price Int
description String? @db.Text // the description about the ticket like this ticket include zoom record

eventId String?
event Event? @relation(fields: [eventId], references: [id])

createdAt DateTime @default(now())
updatedAt DateTime @updatedAt

@@index([eventId])
}

// -----------------------------------------------------------------------------
// Examples
// -----------------------------------------------------------------------------
Expand Down
25 changes: 25 additions & 0 deletions prisma/seed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import dataPostStatuses from "./data/post-statuses.json"
import dataPosts from "./data/posts.json"
import dataRoles from "./data/roles.json"
import dataTags from "./data/tags.json"
import dataTicketCategories from "./data/ticket-categories.json"

/**
* Enable and disable seed items by commenting them
Expand All @@ -30,6 +31,7 @@ const enabledSeedItems = [
"eventCategories",
"eventFormats",
"eventMedia",
"ticketCategories",
]

async function main() {
Expand All @@ -47,6 +49,7 @@ async function main() {
eventFormats: seedEventFormats,
eventMedia: seedEventMedia,
events: seedEvents,
ticketCategories: seedTicketCategories,
}

for (const seedName of enabledSeedItems) {
Expand Down Expand Up @@ -95,6 +98,28 @@ async function seedTags() {
console.timeEnd(`🪧 Created User Tags: ${userTags.count} tags`)
}

async function seedTicketCategories() {
console.info("\n🪧 Seed ticket categories")
console.info(
"🪧 Count ticket categories",
await prisma.ticketCategory.count(),
)
// console.info("🪧 Deleted ticket categories", await prisma.ticketCategory.deleteMany())
console.time("🪧 Upserted ticket categories")

for (const statusRaw of dataTicketCategories) {
const status = await prisma.ticketCategory.upsert({
where: { symbol: statusRaw.symbol },
create: statusRaw,
update: statusRaw,
})
console.info(
`🪧 Upserted ticket category ${status.symbol} / ${status.name}`,
)
}
console.timeEnd("🪧 Upserted ticket categories")
}

async function seedRoles() {
console.info("\n👑 Seed roles")
console.info("👑 Count roles", await prisma.role.count())
Expand Down
4 changes: 4 additions & 0 deletions prisma/utils/check-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ async function checkData() {
console.info("🗓️ Count event categories", await prisma.eventCategory.count())
console.info("🗓️ Count event formats", await prisma.eventFormat.count())
console.info("🗓️ Count event media", await prisma.eventMedia.count())
console.info(
"🗓️ Count ticket categories",
await prisma.ticketCategory.count(),
)
}

checkData()