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

API Express - Front Vue.js [Victor Lima] #75

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node/node_modules
vue/node_modules
33 changes: 33 additions & 0 deletions README-TESTE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
![PicPay](https://user-images.githubusercontent.com/1765696/26998603-711fcf30-4d5c-11e7-9281-0d9eb20337ad.png)

# Com Docker

Apenas será necessário importar os dados no MongoDB.
E executar o 'docker-compose up -d'


# Teste Backend
A API foi feita em Node.js utilizando Express.js, Front End em Vue.js e o banco utilizado foi o mongoDB.

# Banco de Dados (Mongo DB)

Foi utilizado o MongoDB para garantir uma busca eficiente dos dados.
O processo de importação dos dados foi pelo comando:

mongoimport --db test --collection --users --type csv id,name,username --file test.csv



# API Express
Para iniciar a API basta 'npm install && npm start'.
a porta configurada é a 3000

# Front End

Para o Front, basta: 'npm install && npm run serve'

Faça seu login, e busque os usuários!!




2 changes: 2 additions & 0 deletions api/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
npm-debug.log
13 changes: 13 additions & 0 deletions api/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM node:8

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD [ "npm", "start" ]
119 changes: 119 additions & 0 deletions api/controllers/Controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
const fs = require('fs');
var util = require('util')
const CircularJSON = require('circular-json');

const MongoClient = require('mongodb').MongoClient;
let url = `mongodb://127.0.0.1:27017`;
let usr = {useNewUrlParser: true};


const priority = [];

function setPriority(file, data) {
fs.readFile(file, 'utf8', (err, res) => {
if(err){
console.log(err);
}
data(res);
});
}

setPriority(__dirname+'/lista_relevancia_1.txt', (data) => {
priority.push(data.split(/\r?\n/));
setPriority(__dirname+'/lista_relevancia_2.txt', (data) => {
priority.push(data.split(/\r?\n/));
});
});

exports.getUsers = (req, res) => {
let keys = Object.keys(req.body);
let key_word = keys.toString()
let page = req.params.page;
let p = page - 1;
let skip = p*15;
console.log(p*15)


const regex = new RegExp(key_word);
MongoClient.connect(url, usr, (err, client) => {
let db = client.db('picpay');
let col = 'users';
let query = { $or: [{ "name": { $regex: regex, $options: 'i' } }, { "username": { $regex: regex, $options: 'i' } }]};
if(err) throw err;
console.log("Connected");
db.collection(col).find(query).skip(skip).limit(15).toArray(function(error, documents) {
if (err) throw error;
documents.sort((a, b) => {
let id_a = a.id;
let id_b = b.id;
if (priority[0].indexOf(id_a) !== -1)
return 1;
if (priority[0].indexOf(id_b) !== -1)
return -1;
if (priority[1].indexOf(id_a) !== -1)
return 1;
if (priority[1].indexOf(id_b) !== -1)
return -1;
else
return 0;
})
res.send(documents).status(200);
})

})
};


exports.Login = (req, res) => {
let json = (req.body)

MongoClient.connect(url, usr, (err, client) => {
let db = client.db('picpay');
let col = 'login';
let query = json;
if (err) {
console.log(err)
}
console.log("Connected");
db.collection(col).find(query).toArray((error, documents) => {
if (err) {
console.log(err)
}
res.send(documents).status(200);
})
})
};


exports.Register = (req, res) => {
let json = Object(req.body)
let user = json.username
console.log(json.username)

MongoClient.connect(url, usr, (err, client) => {
let db = client.db('picpay');
let col = 'login';
let query1 = {username: user};
if (err) {
console.log(err)
}
console.log("Register");
db.collection(col).find(query1).toArray((error, documents) => {
if (err) {
console.log(err)
}
if(documents.length > 0){
console.log(documents);
res.status(204).send("Esse usuário já existe");
}else{
db.collection(col).insertOne(json, function(error, response){
console.log('Registrado')
if(err){
console.log(error)
}
res.send(response.ops).status(200);
})
}
})
})
}
107 changes: 107 additions & 0 deletions api/controllers/lista_relevancia_1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
fba0be35-7111-43c5-8111-b326360da4d0
7354ff5e-cc72-4cc7-a8d0-279f3349c52b
4096545a-3d93-476d-9a25-ae486a12a720
c9a749fb-2213-47a7-b56d-ebcad7f02bdf
328edd8c-5a54-453a-a9a8-694a4d46e898
1bec9b05-3641-4fe5-8d6f-43835dbafc47
d542a5b1-fb3b-44c7-92d0-64b89565a93e
f7754e98-121d-447f-80c7-a246b1250141
c0c9aa83-ddc4-4088-84ba-095402ea7f16
ceaa2306-41c1-413d-875f-e99bc2e908be
8f065ff7-6fb7-4373-9fb4-3e5daa7d802e
c72710fb-0a47-4c0f-b906-1abe3da9c4ef
277c3e15-c275-4f6c-8345-f2010c58bfac
add2607d-6ada-44c9-a89a-eecc5c225c4f
1a2093a9-0bdb-43c7-acf3-f2d2decb9f25
766c9e3e-5baf-40ac-9455-db6f55dec9e5
636b8bac-2d38-4a59-acdf-14fa4f165d31
8f934250-2d8e-4f2e-a316-d0bbc177cfb8
7d30aad3-ea80-400f-878f-130f2944695a
049dc170-b13f-41bd-b822-6889a3619c91
230b6cd8-7463-424a-b5f5-e3c181a870bc
99b1705c-f1c6-4535-bf22-da2d541c797c
4bc2fb42-7610-47e2-8574-0e7ef9bc6503
2943dfeb-6542-4269-86d9-ce3d97f99c5b
a30e39fb-7684-4886-8247-09cda8c7a469
05815a4b-1571-48c0-80d7-ab290e69b767
f8f92179-d36a-4c37-9c15-72af4a7932eb
a8a2ffa7-c7ee-4747-af94-bafc453ee6e5
e83736a1-a908-46e8-b235-987c8e261cd4
3a03df17-1153-435f-8bf9-904b27faae46
9758d6c4-40dc-4138-8b1a-ef999cf1c540
ef108646-a30c-495f-ab32-0ac1052c57fe
4217eb38-f6b2-48c5-bf25-3ca8a9462385
52f3cd9f-f01b-46ed-8bb4-dde64028da06
7a880f89-d2e6-4fa2-b377-a559d25e516c
af2b0d62-748d-40e7-ad6a-77c7872d59fc
f4b9b827-8221-436b-adaa-3115aec3c26b
6d81db15-2f3f-4122-9ae8-1c2dc1350e60
2923fdfe-9455-4758-9225-08abd60b6a58
1b658968-2326-4532-a3c6-df59815a3a4b
e84a504b-29fc-48fe-aed7-95bca464d1c1
c475c9ae-e561-4bc2-a719-6c6f0c1fa2dc
0bea8a99-f178-4cfe-9170-6ee1620a2720
7fb422d3-965c-4dfd-946c-aa76b393e2f3
805015db-9eaa-44fa-be36-c01099f2025c
3173ca97-7ee8-4001-a4f3-234e5a541679
874134ce-a930-40fb-8a6e-8614af78fccd
cbb5586d-a3ae-4d74-b373-6cc273a797a6
c7727e41-13c2-42fa-b388-3ade3eac53dd
960b225c-48d4-413a-8584-f71163cb4f98
cb8080d9-eafb-4261-ab5e-ba0a4b7b4c50
0a28b0ca-73c0-40b7-9502-e685ba47a6f4
b3954c82-05db-4016-a2d3-38ac632477f7
24630f58-5d96-42d6-bc9f-8fb90007bfbc
c3908d8d-c76b-4ee1-8210-6f141a3dc852
40d76306-6824-498e-9b9c-88369a539cde
706f761f-f847-4e6f-a057-92b7d293ab40
6a63b532-7b1d-468a-90f6-bbb48546f581
30904389-92c8-4711-8eb7-ba0e8c7dc220
bfc1fde7-731a-4cbd-a9e8-3d05a8a3d155
70e4208d-1d45-450c-873a-5cd445b7c792
b0a8d02a-2f18-43ad-948c-8cff49bede40
adcf617b-333e-4e72-9155-a51b0c6ed2bd
a84cef6c-54f6-4dc6-b4f4-afb35fed1923
128af6cc-a7db-4a62-90c4-889848cd3c06
2f423f40-dbbb-45fc-9f89-79b891838c6c
24d9f7b5-9419-443c-8a4d-8a7334aebe90
714effca-4ddb-4f23-a28c-10359e17e6ac
5a0c015b-4c23-44bb-9cea-00b32c40481b
20276d68-7ad6-4dc6-beeb-c0520650a66f
b4d231c3-18ca-41dd-b73e-37f536988fc1
ebd96f97-f4a6-41e6-9f8a-96a060a73b74
ce8887b4-317a-4975-9857-46e40bd1657d
de7bc1f1-039a-49ca-afda-7a3a5d4bfe02
2427ffe5-479c-49de-8a47-1644fae77ca5
a7d48fe0-a037-4230-a546-3fe804b245a4
cd4491ef-89f5-4e9c-ad4c-76f9d3ead1f8
5dd17a55-7233-4ad7-bdb1-61bc8a27ab7e
ff1adc5d-c411-4c9e-9d8b-26cebd17e7be
e9f6340f-1327-49d5-8bcf-43646e6c2194
45868a33-058c-41b8-9a23-b23253ae6216
2a43e34f-1afc-4610-8f99-f58a3cf19631
0252ce83-b1e7-4d1e-ac4b-b0322dfdaead
a3f77b6e-9170-409b-921a-0b2c2894c296
a4079877-a08d-4db3-80cc-fe23cb90b10a
a4312fa0-860f-44a2-b4ba-3026714cd72f
189453fc-011b-4ea4-a964-f2b0479e1ce6
27128444-55d4-4aff-8c74-bded3563a8dc
a596bc4d-a0cd-4607-ae64-61d3c043ccdf
7f58ae38-adfa-4b4e-9f42-b4f9ff448255
3c1bc731-f7cb-46a1-b90a-47eea1f80623
0c00d00f-4183-4c17-b6cf-fa41420c86af
d6f6ec2b-6d24-4e6b-8591-87725c380e6c
9202652f-1b29-42a0-b3f6-b607045e7d4a
152bfd83-88a3-4786-95d5-a7b263fa4449
bcdd8bd7-7967-4ac0-ad10-eb67e5c3238e
55a8afd7-50b5-48b4-8287-8f22d8ef0a65
a0cd9cb6-288b-4fd3-bc14-54fac89755e8
0a92a468-79ff-4334-94db-d5212ec515da
156ed6eb-7777-4b85-8516-fabce190921d
632b0f74-5ada-408c-85c4-7b127683b954
3403fc1a-9560-41db-84d1-ffb337e73aa3
f2effce6-7c1d-4b70-842d-f39ace03972e
10f54225-07af-4c04-bb0f-c4d25bc4ce4b
ad9be504-26f3-4d08-95aa-c2cc26869a26
64894fc5-2dc3-4311-86a4-917d9068fa75
64bb9706-4d5f-4b61-9167-e0ee0bf2c51f
Loading