Skip to content

Commit 15cf8fc

Browse files
authored
Merge pull request #10 from arrecadar/add-mongoose
2 parents 180602e + 9ee1944 commit 15cf8fc

7 files changed

Lines changed: 168 additions & 4 deletions

File tree

.env.example

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
PORT=4004
22
NODE_ENV=development
3+
4+
DB_HOST=database
5+
DB_NAME=arrecadar
6+
DB_PASS=
7+
DB_PORT=27017
8+
DB_USER=

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
- Folder structure for `schema` with root queries and resolvers.
1010
- [Add build scripts before publish in production](https://github.com/babel/example-node-server)
1111
- [Add a healthCheck, we may need a workaround while this don't work properly](https://www.apollographql.com/docs/apollo-server/whats-new.html#Health-checks)
12-
- Mongoose as ODM to handle mongodb
12+
- ([#10](https://github.com/arrecadar/api/pull/10)) Mongoose as ODM to handle mongodb
1313
- User register flow
1414
- User authentication/authorization flow

bootstrap/database.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import mongoose from 'mongoose'
2+
3+
const {
4+
DB_HOST,
5+
DB_NAME,
6+
DB_PASS,
7+
DB_PORT,
8+
DB_USER,
9+
} = process.env
10+
11+
const uri = `mongodb://${DB_HOST}:${DB_PORT}/${DB_NAME}`
12+
13+
export const connect = () =>
14+
mongoose.connect(uri, {
15+
user: DB_USER,
16+
pass: DB_PASS,
17+
useNewUrlParser: true,
18+
})
19+
20+
export const { connection } = mongoose

docker-compose.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,28 @@ services:
66
context: .
77
target: development
88
volumes:
9+
- ./bootstrap:/api/bootstrap
910
- ./server.js:/api/server.js
1011
- ./.babelrc:/api/.babelrc
1112

13+
database:
14+
image: mongo:4.0.2
15+
healthcheck:
16+
test: echo 'db.runCommand("ping").ok | mongo localhost:27017 --quiet'
17+
interval: 5s
18+
retries: 5
19+
expose:
20+
- 27017
21+
environment:
22+
MONGO_INITDB_ROOT_USERNAME: arrecadar
23+
MONGO_INITDB_ROOT_PASSWORD: secret
24+
MONGO_INITDB_DATABASE: arrecadar
25+
1226
api:
1327
extends: base
1428
ports:
1529
- 4004:4004
1630
env_file: .env
31+
depends_on:
32+
database:
33+
condition: service_healthy

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"dependencies": {
3030
"apollo-server": "^2.0.7",
3131
"dotenv": "^6.0.0",
32-
"graphql": "^14.0.2"
32+
"graphql": "^14.0.2",
33+
"mongoose": "^5.2.15"
3334
}
3435
}

server.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
*/
55
import 'dotenv/config'
66
import { ApolloServer, gql } from 'apollo-server'
7+
import { connect as Database } from './bootstrap/database'
8+
9+
/**
10+
* Start dabatase connection
11+
*/
12+
Database()
713

814
const { PORT } = process.env
915

yarn.lock

Lines changed: 116 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,12 @@ async-retry@^1.2.1:
430430
dependencies:
431431
retry "0.12.0"
432432

433+
async@2.6.1:
434+
version "2.6.1"
435+
resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
436+
dependencies:
437+
lodash "^4.17.10"
438+
433439
atob@^2.1.1:
434440
version "2.1.2"
435441
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@@ -945,6 +951,10 @@ binary-extensions@^1.0.0:
945951
version "1.11.0"
946952
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
947953

954+
bluebird@3.5.1:
955+
version "3.5.1"
956+
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
957+
948958
body-parser@1.18.2:
949959
version "1.18.2"
950960
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
@@ -1024,6 +1034,14 @@ browserslist@^3.2.6:
10241034
caniuse-lite "^1.0.30000844"
10251035
electron-to-chromium "^1.3.47"
10261036

1037+
bson@^1.1.0:
1038+
version "1.1.0"
1039+
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.0.tgz#bee57d1fb6a87713471af4e32bcae36de814b5b0"
1040+
1041+
bson@~1.0.5:
1042+
version "1.0.9"
1043+
resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.9.tgz#12319f8323b1254739b7c6bef8d3e89ae05a2f57"
1044+
10271045
builtin-modules@^1.0.0:
10281046
version "1.1.1"
10291047
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -1293,7 +1311,7 @@ debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.
12931311
dependencies:
12941312
ms "2.0.0"
12951313

1296-
debug@^3.1.0:
1314+
debug@3.1.0, debug@^3.1.0:
12971315
version "3.1.0"
12981316
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
12991317
dependencies:
@@ -2454,6 +2472,10 @@ json5@^0.5.1:
24542472
version "0.5.1"
24552473
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
24562474

2475+
kareem@2.2.1:
2476+
version "2.2.1"
2477+
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.2.1.tgz#9950809415aa3cde62ab43b4f7b919d99816e015"
2478+
24572479
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
24582480
version "3.2.2"
24592481
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -2507,6 +2529,10 @@ lodash.debounce@^4.0.8:
25072529
version "4.0.8"
25082530
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
25092531

2532+
lodash.get@4.4.2:
2533+
version "4.4.2"
2534+
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
2535+
25102536
lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5:
25112537
version "4.17.10"
25122538
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
@@ -2560,6 +2586,10 @@ media-typer@0.3.0:
25602586
version "0.3.0"
25612587
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
25622588

2589+
memory-pager@^1.0.2:
2590+
version "1.1.0"
2591+
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.1.0.tgz#9308915e0e972849fefbae6f8bc95d6b350e7344"
2592+
25632593
merge-descriptors@1.0.1:
25642594
version "1.0.1"
25652595
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
@@ -2666,6 +2696,59 @@ mkdirp@^0.5.0, mkdirp@^0.5.1:
26662696
dependencies:
26672697
minimist "0.0.8"
26682698

2699+
mongodb-core@3.1.3:
2700+
version "3.1.3"
2701+
resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.3.tgz#b036bce5290b383fe507238965bef748dd8adb75"
2702+
dependencies:
2703+
bson "^1.1.0"
2704+
require_optional "^1.0.1"
2705+
safe-buffer "^5.1.2"
2706+
optionalDependencies:
2707+
saslprep "^1.0.0"
2708+
2709+
mongodb@3.1.4:
2710+
version "3.1.4"
2711+
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.1.4.tgz#0ff07a7409a4edf05e71f9ff8df3633bd278ed53"
2712+
dependencies:
2713+
mongodb-core "3.1.3"
2714+
safe-buffer "^5.1.2"
2715+
2716+
mongoose-legacy-pluralize@1.0.2:
2717+
version "1.0.2"
2718+
resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4"
2719+
2720+
mongoose@^5.2.15:
2721+
version "5.2.15"
2722+
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.2.15.tgz#3e6459bd7a074f9cbc142052f4d56eae0097adea"
2723+
dependencies:
2724+
async "2.6.1"
2725+
bson "~1.0.5"
2726+
kareem "2.2.1"
2727+
lodash.get "4.4.2"
2728+
mongodb "3.1.4"
2729+
mongodb-core "3.1.3"
2730+
mongoose-legacy-pluralize "1.0.2"
2731+
mpath "0.5.1"
2732+
mquery "3.2.0"
2733+
ms "2.0.0"
2734+
regexp-clone "0.0.1"
2735+
safe-buffer "5.1.2"
2736+
sliced "1.0.1"
2737+
2738+
mpath@0.5.1:
2739+
version "0.5.1"
2740+
resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.5.1.tgz#17131501f1ff9e6e4fbc8ffa875aa7065b5775ab"
2741+
2742+
mquery@3.2.0:
2743+
version "3.2.0"
2744+
resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.0.tgz#e276472abd5109686a15eb2a8e0761db813c81cc"
2745+
dependencies:
2746+
bluebird "3.5.1"
2747+
debug "3.1.0"
2748+
regexp-clone "0.0.1"
2749+
safe-buffer "5.1.2"
2750+
sliced "1.0.1"
2751+
26692752
ms@2.0.0:
26702753
version "2.0.0"
26712754
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -3232,6 +3315,10 @@ regex-not@^1.0.0, regex-not@^1.0.2:
32323315
extend-shallow "^3.0.2"
32333316
safe-regex "^1.1.0"
32343317

3318+
regexp-clone@0.0.1:
3319+
version "0.0.1"
3320+
resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589"
3321+
32353322
regexpp@^2.0.0:
32363323
version "2.0.0"
32373324
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.0.tgz#b2a7534a85ca1b033bcf5ce9ff8e56d4e0755365"
@@ -3292,10 +3379,21 @@ require-uncached@^1.0.3:
32923379
caller-path "^0.1.0"
32933380
resolve-from "^1.0.0"
32943381

3382+
require_optional@^1.0.1:
3383+
version "1.0.1"
3384+
resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
3385+
dependencies:
3386+
resolve-from "^2.0.0"
3387+
semver "^5.1.0"
3388+
32953389
resolve-from@^1.0.0:
32963390
version "1.0.1"
32973391
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
32983392

3393+
resolve-from@^2.0.0:
3394+
version "2.0.0"
3395+
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
3396+
32993397
resolve-url@^0.2.1:
33003398
version "0.2.1"
33013399
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -3343,7 +3441,7 @@ safe-buffer@5.1.1:
33433441
version "5.1.1"
33443442
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
33453443

3346-
safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
3444+
safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
33473445
version "5.1.2"
33483446
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
33493447

@@ -3357,6 +3455,12 @@ safe-regex@^1.1.0:
33573455
version "2.1.2"
33583456
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
33593457

3458+
saslprep@^1.0.0:
3459+
version "1.0.2"
3460+
resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.2.tgz#da5ab936e6ea0bbae911ffec77534be370c9f52d"
3461+
dependencies:
3462+
sparse-bitfield "^3.0.3"
3463+
33603464
sax@^1.2.4:
33613465
version "1.2.4"
33623466
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -3456,6 +3560,10 @@ slice-ansi@1.0.0:
34563560
dependencies:
34573561
is-fullwidth-code-point "^2.0.0"
34583562

3563+
sliced@1.0.1:
3564+
version "1.0.1"
3565+
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
3566+
34593567
snapdragon-node@^2.0.1:
34603568
version "2.1.1"
34613569
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -3507,6 +3615,12 @@ source-map@^0.5.6, source-map@^0.5.7:
35073615
version "0.5.7"
35083616
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
35093617

3618+
sparse-bitfield@^3.0.3:
3619+
version "3.0.3"
3620+
resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11"
3621+
dependencies:
3622+
memory-pager "^1.0.2"
3623+
35103624
spdx-correct@^3.0.0:
35113625
version "3.0.0"
35123626
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"

0 commit comments

Comments
 (0)