matheusmv / event-manager Goto Github PK
View Code? Open in Web Editor NEWAPI para gerenciamento de eventos
License: MIT License
API para gerenciamento de eventos
License: MIT License
Certas funcionalidades do sistema são restritas a organizadores de eventos, portanto, um sistema de autenticação com autorização deve proteger esses recursos do sistema.
{
"email": "[email protected]",
"password": "12345"
}
Analisar requisitos, definir rotas, entidades, etc
Quando há uma nova tentativa de registrar um evento no sistema, devemos verificar se há conflitos entre eventos que ocorrem no mesmo local e mesma data.
Os participantes podem explorar, pesquisar e filtrar eventos com base na categoria.
Utilizar 'query params'
Rota adequada: /events
Exemplo:
/events?category=cinema
Os parâmetros de filtragem podem ser obtidos em: req.query
É necessário adicionar uma lógica de filtragem em conjunto com o prisma.
Atualizar um evento previamente registrado no banco de dados.
Rota: /events/{id}
Método HTTP: PUT
Formato da requisição:
{
"name": "new event name",
"date": "2023-12-26",
"description": "new event description",
"category": "MUSIC",
"local": {
"cep": "89010025",
"state": "SC",
"city": "Blumenau",
"neighborhood": "Centro",
"street": "Rua Doutor Luiz de Freitas Melro",
"number": "160A",
"complement": ""
}
}
export function updateEvent(eventService) {
return async (req, res) => {
...
};
}
export class EventService {
async update(eventId, eventDetails) {
...
}
}
Os participantes podem explorar, pesquisar e filtrar eventos com base nas informações do local.
Utilizar 'query params'
Rota adequada: /events
Exemplo:
/events?state=SP
Os parâmetros de filtragem podem ser obtidos em: req.query
É necessário adicionar uma lógica de filtragem em conjunto com o prisma.
Listar todas as categorias registradas no sistema.
export function getAllCategories(categoryService) {
return async (req, res) => {
...
};
}
export class CategoryService {
async getAll() {
...
}
}
Ao buscar um evento por data e localização passamos os campos que serão relevantes para a consulta.
Os participantes podem explorar, pesquisar e filtrar eventos com base na data do evento.
Utilizar 'query params'
Rota adequada: /events
Exemplo:
/events?date=2023-12-25
/events?startDate=2023-12-25&endDate=2024-01-01
Os parâmetros de filtragem podem ser obtidos em: req.query
É necessário adicionar uma lógica de filtragem em conjunto com o prisma.
Listar os eventos registrados no sistema.
export function getAllEvents(eventService) {
return async (req, res) => {
...
};
}
export class EventService {
async getAll() {
...
}
}
Uma nova categoria deve ser registrada do sistema.
Rota: /categories
Método HTTP: POST
Formato da requisição:
{
"name": "category name",
}
export function createCategory(categoryService) {
return async (req, res) => {
...
};
}
export class CategoryService {
async create(name) {
...
}
}
Um novo evento deve ser registrado do sistema.
Rota: /events
Método HTTP: POST
Formato da requisição:
{
"name": "event name",
"date": "2023-12-25",
"description": "event description",
"category": "MUSIC",
"local": {
"cep": "89010025",
"state": "SC",
"city": "Blumenau",
"neighborhood": "Centro",
"street": "Rua Doutor Luiz de Freitas Melro"
"number": "160A"
"complement": "" // optional
}
}
export function createEvent(eventService) {
return async (req, res) => {
...
};
}
export class EventService {
async create(eventDetails) {
...
}
}
A atualização de um evento deve considerar a alteração de sua categoria e os dados de localização.
async updateEvent(eventId, eventDetails)
Remover uma categoria previamente registrada no banco de dados.
export function deleteCategory(categoryService) {
return async (req, res) => {
...
};
}
export class CategoryService {
async delete(categoryId) {
...
}
}
Buscar uma categoria registrada no sistema.
export function getCategoryById(categoryService) {
return async (req, res) => {
...
};
}
export class CategoryService {
async getById(categoryId) {
...
}
}
Remover um evento previamente registrado no banco de dados.
export function deleteEvent(eventService) {
return async (req, res) => {
...
};
}
export class EventService {
async delete(eventId) {
...
}
}
Buscar um evento registrado no sistema.
export function getEventById(eventService) {
return async (req, res) => {
...
};
}
export class EventService {
async getById(eventId) {
...
}
}
Atualizar uma categoria previamente registrada no banco de dados.
Rota: /categories/{id}
Método HTTP: PUT
Formato da requisição:
{
"name": "new category name",
}
export function updateCategory(categoryService) {
return async (req, res) => {
...
};
}
export class CategoryService {
async update(categoryId, name) {
...
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.