Skip to content
Merged
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
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
.idea/
.vscode/
tmp/
temp/
client/node_modules
client/dist
client/.cache
Expand All @@ -10,4 +14,4 @@ client/package-lock.json
server/package-lock.json
package-lock.json
.DS_Store
client/.DS_Store
client/.DS_Store
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

Server is running on Express with Typescript in node.


-\> GraphIQL Playground http://localhost:3000/graphql

![Screen Shot 2019-03-20 at 10 26 45 PM](https://user-images.githubusercontent.com/5413258/54734798-79443400-4b5f-11e9-9a2c-ea25a4243485.png)
12 changes: 12 additions & 0 deletions ormconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"synchronize": true,
"logging": false,
"entities": ["src/entity/**/*.ts"],
"migrations": ["src/migration/**/*.ts"],
"subscribers": ["src/subscriber/**/*.ts"],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
}
11 changes: 8 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"sei": "cd server && npm install",
"client": "cd client && npm start",
"server": "cd server && npm start",
"start": "concurrently --kill-others-on-fail \"npm run server\" \"npm run client\"",
"start": "ts-node src/index.ts",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
Expand All @@ -21,10 +21,15 @@
"url": "https://github.com/procoder-net/OutingEvents/issues"
},
"devDependencies": {
"concurrently": "^4.0.1"
"concurrently": "^4.0.1",
"ts-node": "3.3.0",
"@types/node": "^8.0.29",
"typescript": "2.5.2"
},
"homepage": "https://github.com/procoder-net/OutingEvents#readme",
"dependencies": {
"graphql": "^14.1.1"
"graphql": "^14.1.1",
"typeorm": "0.2.15",
"reflect-metadata": "^0.1.10"
}
}
53 changes: 53 additions & 0 deletions server/app/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
var express = require("express");
require("dotenv").config({ path: "../variables.env" });
var bodyParser = require("body-parser");
var pg = require("pg");
var client = new pg.Client();
// Bring in graphql express middleware
var ApolloServer = require("apollo-server-express").ApolloServer;
var typeDefs = require("./schema").typeDefs;
var resolvers = require("./resolvers").resolvers;
var server = new ApolloServer({
typeDefs: typeDefs,
resolvers: resolvers
});
// Initialize application
var app = express();
server.applyMiddleware({ app: app });
var PORT = process.env.PORT || 3000;
server.applyMiddleware({ app: app });
app.get("/api", function(req, res) {
client
.connect()
.then(function() {
var query = "SELECT * FROM example_table;";
var params = [];
return client.query(query, params);
})
.then(function(data) {
res.send(data);
})
["catch"](function(err) {
console.log(err);
});
});
app.post("/api", function(req, res) {
client
.connect()
.then(function() {
var query = "INSERT INTO example_table VALUES('person2');";
var params = [];
return client.query(query, params);
})
.then(function(data) {
res.send(data);
})
["catch"](function(err) {
console.log(err);
});
});
app.listen({ port: PORT }, function() {
return console.log(
"\uD83D\uDE80 Server ready at http://localhost:" + PORT + server.graphqlPath
);
});
120 changes: 80 additions & 40 deletions server/app/app.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import "reflect-metadata";
const express = require("express");
require("dotenv").config({ path: "../variables.env" });
const bodyParser = require("body-parser");
Expand All @@ -8,58 +9,97 @@ const cors = require("cors");
const { ApolloServer } = require("apollo-server-express");
const { typeDefs } = require("./schema");
const { resolvers } = require("./resolvers");
//const { Event } = require("./entity/Event");
import Event from "./entity/Event";

import { createConnection, ConnectionOptions } from "typeorm";

const ormConfig: ConnectionOptions = {
type: "postgres",
host: process.env.PGHOST,
port: 5432,
username: process.env.PGUSER,
password: process.env.PGPASSWORD,
database: process.env.PGDATABASE,
entities: [Event],
synchronize: true,
logging: false
};
console.log(JSON.stringify(ormConfig, null, 4));

const app = express();

const server = new ApolloServer({
typeDefs,
resolvers
});

// Initialize application
const app = express();

const corsOptions = {
origin: "http://localhost:1234",
credentials: true
};
app.use(cors());
server.applyMiddleware({ app });
const PORT = process.env.PORT || 3000;
server.applyMiddleware({ app });

app.get("/api", (req: any, res: any) => {
client
.connect()
.then(() => {
const query: string = "SELECT * FROM example_table;";
const params: string[] = [];
return client.query(query, params);
})
.then((data: any) => {
res.send(data);
})
.catch((err: any) => {
console.log(err);
createConnection(ormConfig)
.then(async connection => {
app.use(cors());
server.applyMiddleware({ app });
const PORT = process.env.PORT || 3000;
server.applyMiddleware({ app });

app.get("/event", (req: any, res: any) => {
connection.manager
.getRepository(Event)
.find()
.then(events => {
res.status(200);
res.send(events);
})
.catch(err => {
res.status(500);
res.send(err);
});
});
});

app.post("/api", (req: any, res: any) => {
client
.connect()
.then(() => {
const query: string = "INSERT INTO example_table VALUES('person2');";
const params: string[] = [];
return client.query(query, params);
})
.then((data: any) => {
res.send(data);
})
.catch((err: any) => {
console.log(err);
app.get("/event/:event_name", (req: any, res: any) => {
connection.manager
.getRepository(Event)
.find({ name: req.params.event_name })
.then(events => {
res.status(200);
res.send(events);
})
.catch(err => {
res.status(500);
res.send(err);
});
});

app.post("/event", (req: any, res: any) => {
const event = new Event();
event.name = "April fools";
event.type = "Jokes";
event.location = "Planet earth";
event.state = "planning";
event.survey_id = 367;
event.start_time = new Date(2019, 3, 1, 0, 0, 0, 0);
event.end_time = new Date(2019, 3, 2, 0, 0, 0, 0);
connection.manager
.save(event)
.then((result: any) => {
res.status(202);
res.send(result);
})
.catch(err => {
res.status(500);
res.send(err);
console.log(JSON.stringify(err, null, 4));
});
});
});

app.listen({ port: PORT }, () =>
console.log(
`🚀 Server ready at http://localhost:${PORT}${server.graphqlPath}`
)
);
app.listen({ port: PORT }, () =>
console.log(
`🚀 Server ready at http://localhost:${PORT}${server.graphqlPath}`
)
);
})
.catch(error => console.log(error));
28 changes: 28 additions & 0 deletions server/app/entity/Event.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";

@Entity()
export default class Event extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;

@Column()
type: string;

@Column()
name: string;

@Column()
location: string;

@Column()
state: string;

@Column()
survey_id: number;

@Column()
start_time: Date;

@Column()
end_time: Date;
}
29 changes: 29 additions & 0 deletions server/app/entity/EventParticipant.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
import Event from "./Event";

@Entity()
export default class EventParticipant {
@PrimaryGeneratedColumn()
id: number;

@Column()
event_id: number;

@Column()
user_id: number;

@Column()
is_organizer: boolean;

@Column()
notified: boolean;

@Column()
confirmed: boolean;

@Column()
attended: boolean;

@Column()
tooksurvey: boolean;
}
25 changes: 25 additions & 0 deletions server/app/entity/Payment.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";

@Entity()
export default class Payment {
@PrimaryGeneratedColumn()
id: number;

@Column()
event_id: number;

@Column()
user_id: number;

@Column()
status: string;

@Column()
description: string;

@Column()
amount: number;

@Column()
currency: string;
}
22 changes: 22 additions & 0 deletions server/app/entity/Receipt.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";

@Entity()
export default class Receipt {
@PrimaryGeneratedColumn()
id: number;

@Column()
event_id: number;

@Column()
vendor: string;

@Column()
description: string;

@Column()
amount: number;

@Column()
currency: string;
}
16 changes: 16 additions & 0 deletions server/app/entity/SurveyQuestion.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm";

@Entity()
export default class SurveyQuestion extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;

@Column()
name: string;

@Column()
event_id: number;

@Column()
questions: string;
}
Loading