Skip to content

Commit

Permalink
setup database connection & schemas
Browse files Browse the repository at this point in the history
  • Loading branch information
Amr Ebada committed Dec 30, 2019
1 parent 1868cd1 commit 59e1927
Show file tree
Hide file tree
Showing 15 changed files with 210 additions and 11 deletions.
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
PORT=
DB_URL=
11 changes: 5 additions & 6 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
{
"parser": "babel-eslint",
"extends": [
"airbnb-base",
"plugin:prettier/recommended"
],
"plugins": [ ],
"extends": ["airbnb-base", "plugin:prettier/recommended"],
"plugins": [],
"env": {
"jest": true
},
"rules": {}
"rules": {
"no-console": "off"
}
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ coverage
dist
node_modules
*.log
.env
40 changes: 40 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"prototype"
],
"dependencies": {
"dotenv": "8.2.0",
"express": "4.17.1",
"express-graphql": "0.9.0",
"graphql": "14.5.8",
Expand Down
8 changes: 8 additions & 0 deletions src/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { config } from "dotenv";

config();

export default {
PORT: process.env.PORT || 5000,
DB_URL: process.env.DB_URL || ""
};
20 changes: 15 additions & 5 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
import express from "express";
import graphQlHTTP from "express-graphql";
import schema from "./schemas/schema";
import dbInit from "./models/index";
import config from "./config";

const app = express();
const PORT = process.env.PORT || 5000;

app.use("/graphql",graphQlHTTP({
app.use(
"/graphql",
graphQlHTTP({
schema,
graphiql:true
}));
graphiql: true
})
);

app.listen(PORT,()=> console.log(`server running on port ${PORT}`))
dbInit()
.then(() => {
app.listen(config.PORT, () => {
console.log(`server running on port ${config.PORT}`);
});
})
.catch(err => console.error(err));
21 changes: 21 additions & 0 deletions src/models/films.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* eslint-disable new-cap */
import { Schema, model } from "mongoose";

const films = new Schema({
id: Schema.Types.Number,
characters: [Schema.Types.Number],
created: Schema.Types.String,
director: Schema.Types.String,
edited: Schema.Types.String,
episode_id: Schema.Types.Number,
opening_crawl: Schema.Types.String,
planets: [Schema.Types.Number],
producer: Schema.Types.String,
release_date: Schema.Types.String,
species: [Schema.Types.Number],
starships: [Schema.Types.Number],
title: Schema.Types.String,
vehicles: [Schema.Types.Number]
});

export default new model("films", films);
16 changes: 16 additions & 0 deletions src/models/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { connect } from "mongoose";
import config from "../config";

export default () => {
return new Promise((resolve, reject) => {
connect(
config.DB_URL,
err => {
if (err) {
return reject(err);
}
return resolve();
}
);
});
};
19 changes: 19 additions & 0 deletions src/models/people.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/* eslint-disable new-cap */
import { Schema, model } from "mongoose";

const people = new Schema({
id: Schema.Types.Number,
birth_year: Schema.Types.String,
created: Schema.Types.String,
edited: Schema.Types.String,
eye_color: Schema.Types.String,
gender: Schema.Types.String,
hair_color: Schema.Types.String,
height: Schema.Types.String,
homeworld: Schema.Types.Number,
mass: Schema.Types.String,
name: Schema.Types.String,
skin_color: Schema.Types.String
});

export default new model("people", people);
19 changes: 19 additions & 0 deletions src/models/planets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/* eslint-disable new-cap */
import { Schema, model } from "mongoose";

const planets = new Schema({
id: Schema.Types.Number,
climate: Schema.Types.String,
created: Schema.Types.String,
diameter: Schema.Types.String,
edited: Schema.Types.String,
gravity: Schema.Types.String,
name: Schema.Types.String,
orbital_period: Schema.Types.String,
population: Schema.Types.String,
rotation_period: Schema.Types.String,
surface_water: Schema.Types.String,
terrain: Schema.Types.String
});

export default new model("planets", planets);
21 changes: 21 additions & 0 deletions src/models/species.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* eslint-disable new-cap */
import { Schema, model } from "mongoose";

const species = new Schema({
id: Schema.Types.Number,
average_height: Schema.Types.String,
average_lifespan: Schema.Types.String,
classification: Schema.Types.String,
created: Schema.Types.String,
designation: Schema.Types.String,
edited: Schema.Types.String,
eye_colors: Schema.Types.String,
hair_colors: Schema.Types.String,
homeworld: Schema.Types.Number,
language: Schema.Types.String,
name: Schema.Types.String,
people: [Schema.Types.Number],
skin_colors: Schema.Types.String
});

export default new model("species", species);
12 changes: 12 additions & 0 deletions src/models/starships.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/* eslint-disable new-cap */
import { Schema, model } from "mongoose";

const starships = new Schema({
id: Schema.Types.Number,
MGLT: Schema.Types.String,
hyperdrive_rating: Schema.Types.String,
pilots: [Schema.Types.Number],
starship_class: Schema.Types.String
});

export default new model("starships", starships);
20 changes: 20 additions & 0 deletions src/models/transports.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* eslint-disable new-cap */
import { Schema, model } from "mongoose";

const transports = new Schema({
id: Schema.Types.Number,
cargo_capacity: Schema.Types.String,
consumables: Schema.Types.String,
cost_in_credits: Schema.Types.String,
created: Schema.Types.String,
crew: Schema.Types.String,
edited: Schema.Types.String,
length: Schema.Types.String,
manufacturer: Schema.Types.String,
max_atmospering_speed: Schema.Types.String,
model: Schema.Types.String,
name: Schema.Types.String,
passengers: Schema.Types.String
});

export default new model("transports", transports);
10 changes: 10 additions & 0 deletions src/models/vehicles.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/* eslint-disable new-cap */
import { Schema, model } from "mongoose";

const vehicles = new Schema({
id: Schema.Types.Number,
pilots: [Schema.Types.Number],
vehicle_class: Schema.Types.String
});

export default new model("vehicles", vehicles);

0 comments on commit 59e1927

Please sign in to comment.