Skip to content
Open
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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
package-lock.json
build
.env
61 changes: 28 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,28 @@
## LabenuSystem:

Você estuda na Labenu_ há tanto tempo que já parecem anos, não é? Então, hoje, vamos pedir para criar um sistema que represente o básico da nossa organização.

Ele deve possuir, ao menos, as 3 entidades importantes:

1. Estudantes

Representa estudantes da nossa instituição. Eles devem possuir: id, nome, email, data de nascimento e os principais hobbies dele.

2. Docente

Representa docentes da nossa instituição. Eles devem possuir: id, nome, email, data de nascimento e todas as especialidades dele. Há 7 especialidades: React, Redux, CSS, Testes, Typescript, Programação Orientada a Objetos e Backend

3. Turma

Toda turma é composta das seguintes características: id, nome, data de início, data de término, lista de professores responsáveis, uma lista de alunos e módulo atual em que a turma está.

O módulo pode assumir os valores de 1 a 7 ou `undefined`, indicando que as aulas dessa turma ainda não começaram. Para esse exercício, vamos considerar que existam dois tipos de turma: integral ou noturna. Há uma restrição para o nome das turmas noturnas: tem que terminar com `-na-night`.

As funcionalidades básicas são:

→ Criar estudante;

→ Criar docente;

→ Criar turma;

→ Adicionar estudante na turma;

→ Adicionar docente na turma;

→ Pegar a idade de algum estudante a partir do id
## 🏦 LabenuSystem

API desenvolvida para ser utilizada como um sistema organizacional de estudantes, docentes e turmas da Labenu.

### 🔗 Link da documentação:
https://documenter.getpostman.com/view/19298136/UyrAGchs

### ✔ O que funciona:
- Criar turma
- Buscar turmas ativas
- Mudar o módulo da turma
- Criar estudante
- Buscar estudantes por nome
- Mudar estudante de turma
- Criar docente
- Buscar docentes
- Mudar docente de turma

### ❌ O que falta implementar:
- Exibir todas as pessoas pertencentes a uma mesma turma
- Exibir estudantes que tenham o mesmo hobby
- Exibir todos os docentes que tenham uma mesma especialidade
- Exibir todas as pessoas de um mesmo signo

### 👩‍💻👨‍💻 Projeto desenvolvido por:
- Ana Sue Sammi
- Diane Silva de Araújo
- Vitor Duarte Passo
39 changes: 39 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"name": "vaughan-labenu-system5",
"version": "1.0.0",
"description": "Você estuda na Labenu_ há tanto tempo que já parecem anos, não é? Então, hoje, vamos pedir para criar um sistema que represente o básico da nossa organização.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "tsc && node ./build/index.js",
"dev": "ts-node-dev ./src/index.ts",
"migrations": "tsnd ./src/data/migrations.ts"
},
"repository": {
"type": "git",
"url": "git+https://github.com/future4code/Vaughan-labenu-system5.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/future4code/Vaughan-labenu-system5/issues"
},
"homepage": "https://github.com/future4code/Vaughan-labenu-system5#readme",
"dependencies": {
"@types/knex": "^0.16.1",
"cors": "^2.8.5",
"dotenv": "^16.0.0",
"express": "^4.17.3",
"knex": "^1.0.7",
"mysql": "^2.18.1",
"typescript": "^4.6.3",
"uuid": "^8.3.2"
},
"devDependencies": {
"@types/cors": "^2.8.12",
"@types/express": "^4.17.13",
"@types/uuid": "^8.3.4",
"ts-node-dev": "^1.1.8"
}
}
16 changes: 16 additions & 0 deletions src/app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import express from 'express'
import cors from 'cors'
import { AddressInfo } from "net";
export const app = express()

app.use(express.json())
app.use(cors())

const server = app.listen(process.env.PORT || 3003, () => {
if (server) {
const address = server.address() as AddressInfo;
console.log(`Server is running in http://localhost: ${address.port}`);
} else {
console.error(`Failure upon starting server.`);
}
});
17 changes: 17 additions & 0 deletions src/classes/Docente.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Usuarios } from "./Usuarios";
import { v4 as uuidv4 } from 'uuid';

export class Docente extends Usuarios{
especialidades: string[]
constructor(
nome: string,
email: string,
data_nasc: string,
turma_id: string
){
super(nome, email, data_nasc, turma_id)
}
public retornaProfessor(): string{
return this.nome
}
}
16 changes: 16 additions & 0 deletions src/classes/Estudante.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Usuarios } from "./Usuarios";

export class Estudante extends Usuarios{
hobbies: string[]
constructor(
nome: string,
email: string,
data_nasc: string,
turma_id:string
){
super(nome, email, data_nasc, turma_id)
}
public retornaData(): string{
return this.nome
}
}
17 changes: 17 additions & 0 deletions src/classes/Turma.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Request, Response } from 'express';
import { v4 as uuidv4 } from 'uuid';

export class Turma {
id: string
nome: string
modulo: string
constructor(nome:string, modulo:string) {
this.id = uuidv4()
this.nome = nome
this.modulo = modulo
}
public retornaTurma(): string{
return this.nome
}

}
21 changes: 21 additions & 0 deletions src/classes/Usuarios.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { v4 as uuidv4 } from 'uuid';

export class Usuarios {
id: string
nome: string
email: string
data_nasc: string
turma_id: string
constructor(
nome: string,
email: string,
data_nasc: string,
turma_id: string
){
this.id = uuidv4()
this.nome = nome
this.email = email
this.data_nasc = data_nasc
this.turma_id = turma_id
}
}
16 changes: 16 additions & 0 deletions src/data/connections.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import knex from "knex"
import dotenv from "dotenv"

dotenv.config()

export const connection = knex({
client: "mysql",
connection: {
host: process.env.DB_HOST,
port: 3306,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
multipleStatements: true
}
})
37 changes: 37 additions & 0 deletions src/data/docente.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[
{
"id": "1",
"nome": "Flavio",
"email": "Flavio@gmail.com",
"data_nasc": "1995-03-20",
"turma_id": "1"
},
{
"id": "2",
"nome": "Iza",
"email": "Iza@gmail.com",
"data_nasc": "1994-06-20",
"turma_id": "2"
},
{
"id": "3",
"nome": "Paulinha",
"email": "paulinha@gmail.com",
"data_nasc": "1992-08-20",
"turma_id": "3"
},
{
"id": "4",
"nome": "Roberto",
"email": "Roberto@gmail.com",
"data_nasc": "1999-04-14",
"turma_id": "4"
},
{
"id": "5",
"nome": "Gabriel",
"email": "Gabriel@gmail.com",
"data_nasc": "1989-11-06",
"turma_id": "4"
}
]
27 changes: 27 additions & 0 deletions src/data/docenteEspecialidade.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[
{
"id": "1",
"docente_id": "1",
"especialidade_id": "1"
},
{
"id": "2",
"docente_id": "2",
"especialidade_id": "2"
},
{
"id": "3",
"docente_id": "3",
"especialidade_id": "3"
},
{
"id": "4",
"docente_id": "4",
"especialidade_id": "4"
},
{
"id": "5",
"docente_id": "5",
"especialidade_id": "5"
}
]
22 changes: 22 additions & 0 deletions src/data/especialidade.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[
{
"id": "1",
"nome": "Js"
},
{
"id": "2",
"nome": "Css"
},
{
"id": "3",
"nome": "React"
},
{
"id": "4",
"nome": "Typescript"
},
{
"id": "5",
"nome": "POO (Programação Orientada a Objetos)"
}
]
37 changes: 37 additions & 0 deletions src/data/estudante.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[
{
"id": "1",
"nome": "Vitor",
"email": "vitor@gmail.com",
"data_nasc": "2003-06-17",
"turma_id": "1"
},
{
"id": "2",
"nome": "Ana",
"email": "Ana@gmail.com",
"data_nasc": "1995-03-20",
"turma_id": "2"
},
{
"id": "3",
"nome": "Diane",
"email": "Diane@gmail.com",
"data_nasc": "1994-04-28",
"turma_id": "3"
},
{
"id": "4",
"nome": "Gabriela",
"email": "Gabriela@gmail.com",
"data_nasc": "1996-11-04",
"turma_id": "4"
},
{
"id": "5",
"nome": "Ronald",
"email": "Ronald@gmail.com",
"data_nasc": "1993-04-10",
"turma_id": "4"
}
]
27 changes: 27 additions & 0 deletions src/data/hobbiesEstudante.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[
{
"id": "1",
"estudante_id": "1",
"hobby_id": "1"
},
{
"id": "2",
"estudante_id": "2",
"hobby_id": "2"
},
{
"id": "3",
"estudante_id": "3",
"hobby_id": "3"
},
{
"id": "4",
"estudante_id": "4",
"hobby_id": "4"
},
{
"id": "5",
"estudante_id": "5",
"hobby_id": "5"
}
]
Loading