entity FiscalData { nif String required maxlength(9) birthDate LocalDate } entity Artist { artistName String required infoUrl TextBlob } entity Venue { venueName String required infoUrl TextBlob location Location capacity Integer required required min(50) max(100000) } enum Location { Madrid, Barcelona, Valencia, Sevilla, Zaragoza } entity Event { eventDateTime Instant required ticketPrice BigDecimal required feeModel FeeModel required feeAmount Integer required artistUserId Long venueUserId Long isConfirmedByArtist Boolean isConfirmedByVenue Boolean isRejected Boolean ticketsSold Integer } enum FeeModel { Fijo, Porcentaje } entity Ticket { fecha Instant } relationship OneToOne { FiscalData{User} to User{FiscalData} } relationship OneToMany { Event{Ticket} to Ticket{Event} } relationship ManyToOne { Artist{User} to User, Venue{User} to User, Event{Artist} to Artist, Event{Venue} to Venue, Ticket{FiscalData} to FiscalData } filter Artist, Venue, Event, Ticket, FiscalData paginate Artist, Venue with pagination paginate Event, Ticket with infinite-scroll service all with serviceImpl