Start moving data server handling from pinia store to server

This commit is contained in:
2024-10-03 19:03:36 +02:00
parent 2cbee721c7
commit 2b7e87a68d
27 changed files with 401 additions and 215 deletions

View File

@@ -3,7 +3,7 @@ import { Band } from "../models/acts/band.model";
import { Request, Response, Router } from "express";
import { Rating } from "../models/acts/rating.model";
import { Genre } from "../models/acts/genre.model";
import { Tour } from "../models/acts/tour.model";
import { Event } from "../models/acts/event.model";
import { Concert } from "../models/acts/concert.model";
import { Location } from "../models/locations/location.model";
import { City } from "../models/locations/city.model";
@@ -27,7 +27,7 @@ band.get("/", (req: Request, res: Response) => {
}
},
{
model: Tour,
model: Event,
include: [
{
model: Concert,

View File

@@ -1,7 +1,7 @@
import { Location } from "../models/locations/location.model";
import { Concert } from "../models/acts/concert.model";
import { Request, Response, Router } from "express";
import { Tour } from "../models/acts/tour.model";
import { Event } from "../models/acts/event.model";
import { City } from "../models/locations/city.model";
export const concert = Router()
@@ -9,7 +9,7 @@ export const concert = Router()
concert.get("/:id", (req: Request, res: Response) => {
Concert.findByPk(req.params.id, {
include: [
Tour,
Event,
{
model: Location,
include: [ City ],

View File

@@ -0,0 +1,79 @@
import { Concert } from "../models/acts/concert.model";
import { Band } from "../models/acts/band.model";
import { Event } from "../models/acts/event.model";
import { Request, Response, Router } from "express";
import { Location } from "../models/locations/location.model";
import { Genre } from "../models/acts/genre.model";
import { City } from "../models/locations/city.model";
export const events = Router()
events.get("/", async (req: Request, res: Response) => {
let cityName = req.query.city
let genreName = req.query.genre
let cityFilter = {}
let genreFilter = {}
if (cityName != undefined) {
cityFilter = {
model: City,
where: { name: cityName }
}
} else {
cityFilter = {
model: City
}
}
if (genreName != undefined) {
genreFilter = {
model: Genre,
where: { name: genreName }
}
} else {
genreFilter = {
model: Genre
}
}
Event.findAll({
include: [
{
model: Concert,
include: [
{
model: Location,
include: [
cityFilter
]
}
]
},
{
model: Band,
include: [
genreFilter
]
}
]
})
.then(events => {
let resultArray = []
// Remove datasets which not fulfill the optional parameter
for (let event of events) {
if (event.dataValues.band != null) {
for (let concert of event.dataValues.concerts) {
if (concert.dataValues.location != null) {
resultArray.push(event)
break
}
}
}
}
res.status(200).json(resultArray)
})
})

View File

@@ -2,7 +2,7 @@ import { Concert } from "../models/acts/concert.model";
import { City } from "../models/locations/city.model";
import { Location } from "../models/locations/location.model";
import { Request, Response, Router } from "express";
import { Tour } from "../models/acts/tour.model";
import { Event } from "../models/acts/event.model";
import { Band } from "../models/acts/band.model";
import { SeatGroup } from "../models/locations/seatGroup.model";
import { Seat } from "../models/locations/seat.model";
@@ -16,7 +16,7 @@ location.get("/", (req: Request, res: Response) => {
City,
{
model: Concert,
include: [ Tour ],
include: [ Event ],
attributes: {
exclude: [ "locationId", "tourId" ]
}

View File

@@ -1,7 +1,7 @@
import { Router, Request, Response } from "express";
import { Order } from "../models/ordering/order.model";
import { Concert } from "../models/acts/concert.model";
import { OrderItem } from "../models/ordering/orderItem.model";
import { Ticket } from "../models/ordering/ticket.model";
import { Payment } from "../models/user/payment.model";
import { Address } from "../models/user/address.model";
import { Band } from "../models/acts/band.model";
@@ -15,7 +15,7 @@ order.get("/:id", (req: Request, res: Response) => {
where: { accountId: req.params.id },
include: [
{
model: OrderItem,
model: Ticket,
include: [
{
model: Concert,
@@ -43,7 +43,7 @@ order.post("/", (req: Request, res: Response) => {
Order.create(req.body)
.then(async order => {
for (let orderItem of req.body.orderItems) {
OrderItem.create({
Ticket.create({
orderId: order.id,
quantity: orderItem.quantity,
orderPrice: orderItem.orderPrice,

View File

@@ -1,44 +0,0 @@
import { Concert } from "../models/acts/concert.model";
import { Band } from "../models/acts/band.model";
import { Tour } from "../models/acts/tour.model";
import { Request, Response, Router } from "express";
import { Location } from "../models/locations/location.model";
import { Genre } from "../models/acts/genre.model";
import { City } from "../models/locations/city.model";
export const tour = Router()
tour.get("/", (req: Request, res: Response) => {
Tour.findAll({
include: [
{
model: Band,
include: [ Genre ],
attributes: {
exclude: [ "genreId" ]
}
},
{
model: Concert,
include: [
{
model: Location,
include: [ City ],
attributes: {
exclude: [ "cityId" ]
}
}
],
attributes: {
exclude: [ "locationId", "tourId" ]
}
},
],
attributes: {
exclude: [ "bandId" ]
}
})
.then(tours => {
res.status(200).json(tours)
})
})