Skip to content

Commit 68887f7

Browse files
authored
Merge pull request #424 from connect-foundation/Develop
Week6 PR Develop to master
2 parents 1ba6255 + a1657df commit 68887f7

File tree

306 files changed

+6533
-2365
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

306 files changed

+6533
-2365
lines changed

โ€ŽREADME.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@
3535
- Host๋Š” ํˆฌํ‘œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Guest๋“ค์—๊ฒŒ ์‹ค์‹œ๊ฐ„ ํˆฌํ‘œ ์ฐธ์—ฌ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ
3636
- Guest๋“ค์€ ํˆฌํ‘œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ , ํˆฌํ‘œ ์ƒํ™ฉ์€ ์‹ค์‹œ๊ฐ„ ๊ณต์œ ๋จ
3737

38-
## start local dev mode
39-
```sh
40-
yarn start
41-
```
42-
4338
## ์œ„ํ‚ค ๋งํฌ
4439

4540
[wiki](https://github.com/connect-foundation/2019-21/wiki)

โ€Žbackend/.env.example

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
#######################################################################################################################
12
# MYSQL dev docker args
3+
#
24
MYSQL_DEV_CONTAINER_NAME=mysql_bagle_dev
35
MYSQL_DEV_ROOT_PASSWORD=db_root_password
46
MYSQL_DEV_USER=DB_user
@@ -7,7 +9,10 @@ MYSQL_DEV_PORT=3307
79
MYSQL_DEV_HOST=127.0.0.1
810
MYSQL_DEV_SCHEME=bagle_dev
911
MYSQL_DEV_DIALECT=mysql
12+
#######################################################################################################################
1013

14+
15+
#######################################################################################################################
1116
# MYSQL test docker args
1217
MYSQL_TEST_CONTAINER_NAME=mysql_bagle_test
1318
MYSQL_TEST_ROOT_PASSWORD=db_root_password
@@ -17,7 +22,10 @@ MYSQL_TEST_PORT=3308
1722
MYSQL_TEST_HOST=127.0.0.1
1823
MYSQL_TEST_SCHEME=bagle_test
1924
MYSQL_TEST_DIALECT=mysql
25+
#######################################################################################################################
26+
2027

28+
#######################################################################################################################
2129
# MYSQL product(deploy) args
2230
MYSQL_PROD_CONTAINER_NAME=mysql_bagle
2331
MYSQL_PROD_ROOT_PASSWORD=db_root_password
@@ -27,14 +35,20 @@ MYSQL_PROD_PORT=3306
2735
MYSQL_PROD_HOST=127.0.0.1
2836
MYSQL_PROD_SCHEME=bagle
2937
MYSQL_PROD_DIALECT=mysql
38+
#######################################################################################################################
3039

40+
41+
#######################################################################################################################
3142
# docker volumn path
3243
# path is start from docker compose file path
3344
# ex) project_root_path/docker
3445
DOCKER_VOLUMNS_PATH=./volumes
3546
NODE_IMAGE_NAME=deploy:node
47+
#######################################################################################################################
48+
3649

37-
# express docker args
50+
#######################################################################################################################
51+
# express server setting
3852
EXPRESS_PROD_CONTAINER_NAME=express
3953
EXPRESS_DEV_CONTAINER_NAME=express_dev
4054
EXPRESS_TEST_CONTAINER_NAME=express_test
@@ -43,6 +57,26 @@ EXPRESS_DEV_PORT=3001
4357
EXPRESS_TEST_PORT=3002
4458
EXPRESS_PROD_PORT=3000
4559

60+
EXPRESS_DEV_PUBLIC_PATH=./express/public
61+
EXPRESS_TEST_PUBLIC_PATH=./build/express/public
62+
EXPRESS_PROD_PUBLIC_PATH=./build/express/public
63+
64+
# route
65+
MAIN_PAGE=http://localhost:5000/
66+
HOST_PAGE=http://localhost:5001/
67+
GUEST_PAGE=http://localhost:5002/
68+
69+
DEV_MAIN_PAGE=http://localhost:5000/
70+
DEV_HOST_PAGE=http://localhost:5001/
71+
DEV_GUEST_PAGE=http://localhost:5002/
72+
73+
PROD_MAIN_PAGE=http://www.vaagle.com/main-app/
74+
PROD_HOST_PAGE=http://www.vaagle.com/host-app/
75+
PROD_GUEST_PAGE=http://www.vaagle.com/guest-app/
76+
#######################################################################################################################
77+
78+
79+
######################################################################################################
4680
# socket.io server docker
4781
SOCKET_IO_SERVER_PROD_CONTAINER_NAME=socket.io
4882
SOCKET_IO_SERVER_DEV_CONTAINER_NAME=socket.io_dev
@@ -51,11 +85,10 @@ SOCKET_IO_SERVER_TEST_CONTAINER_NAME=socket.io_test
5185
SOCKET_IO_SERVER_DEV_PORT=4001
5286
SOCKET_IO_SERVER_TEST_PORT=4002
5387
SOCKET_IO_SERVER_PROD_PORT=4000
88+
#######################################################################################################################
5489

55-
EXPRESS_DEV_PUBLIC_PATH=./express/public
56-
EXPRESS_TEST_PUBLIC_PATH=./build/express/public
57-
EXPRESS_PROD_PUBLIC_PATH=./build/express/public
5890

91+
#######################################################################################################################
5992
#graphql yoga server
6093
GRAPHQL_YOGA_SERVER_DEV_PORT=8001
6194
GRAPHQL_YOGA_SERVER_TEST_PORT=8002
@@ -64,7 +97,10 @@ GRAPHQL_YOGA_SERVER_PROD_PORT=8000
6497
GRAPHQL_YOGA_SERVER_DEV_CONTAINER_NAME=graphQL_yoga_dev
6598
GRAPHQL_YOGA_SERVER_TEST_CONTAINER_NAME=graphQL_yoga_test
6699
GRAPHQL_YOGA_SERVER_PROD_CONTAINER_NAME=graphQL_yoga
100+
#######################################################################################################################
101+
67102

103+
#######################################################################################################################
68104
#Oauth DEV config
69105
OAUTH2_CLIENT_DEV_ID=
70106
OAUTH2_CLIENT_DEV_SECRET=
@@ -80,16 +116,16 @@ OAUTH2_PROD_CALLBACK=
80116
AUTH_PROD_TOKEN_SECRET=
81117
AUTH_PROD_TOKEN_ISSUER=
82118
AUTH_PROD_TOKEN_AUDIENCE=
119+
#######################################################################################################################
83120

84-
#route
85-
MAIN_PAGE=http://localhost:5000/
86-
HOST_PAGE=http://localhost:5001/
87-
GUEST_PAGE=http://localhost:5002/
88121

89-
DEV_MAIN_PAGE=http://localhost:5000/
90-
DEV_HOST_PAGE=http://localhost:5001/
91-
DEV_GUEST_PAGE=http://localhost:5002/
122+
#######################################################################################################################
123+
# redis
124+
REDIS_DEV_CONTAINER_NAME=redis_dev
125+
REDIS_DEV_PORT=6379
126+
REDIS_DEV_HOST=127.0.0.1
92127

93-
PROD_MAIN_PAGE=http://www.vaagle.com/main-app/
94-
PROD_HOST_PAGE=http://www.vaagle.com/host-app/
95-
PROD_GUEST_PAGE=http://www.vaagle.com/guest-app/
128+
REDIS_PROD_CONTAINER_NAME=redis_dev
129+
REDIS_PROD_PORT=6379
130+
REDIS_PROD_HOST=127.0.0.1
131+
#######################################################################################################################

โ€Žbackend/.prettierrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ tabWidth: 4
33
useTabs: true
44
semi: true
55
singleQuote: false
6-
bracketSpacing: true
6+
bracketSpacing: false

โ€Žbackend/DB/dummy/candidateDummies.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import faker from "faker";
22
import config from "./initialConfig";
33

4-
const { INIT_SEED, POLL_NUM } = config;
4+
const {INIT_SEED, POLL_NUM} = config;
55

66
faker.seed(INIT_SEED);
77

@@ -14,7 +14,7 @@ export default function makeCandidateDummy(number = POLL_NUM) {
1414
// 0: N์ง€์„ ๋‹ค(text), 1: N์ง€์„ ๋‹ค(date), 2: ๋ณ„์ ๋งค๊ธฐ๊ธฐ
1515
if (index % 3 === 0) {
1616
const LIMIT =
17-
numberOfCandidates[faker.random.number({ min: 0, max: 9 })];
17+
numberOfCandidates[faker.random.number({min: 0, max: 9})];
1818

1919
for (
2020
let candidateNumber = 0;
@@ -36,7 +36,7 @@ export default function makeCandidateDummy(number = POLL_NUM) {
3636
}
3737
} else if (index % 3 === 1) {
3838
const LIMIT =
39-
numberOfCandidates[faker.random.number({ min: 0, max: 9 })];
39+
numberOfCandidates[faker.random.number({min: 0, max: 9})];
4040

4141
for (
4242
let candidateNumber = 0;

โ€Žbackend/DB/dummy/emojiDummies.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default async function makeEmojiDummy(number = 500) {
2424
name,
2525
createdAt,
2626
updatedAt,
27-
EventId: res.dataValues.EventId
27+
EventId: res.dataValues.EventId,
2828
});
2929
}
3030
return bulkEmoji;

โ€Žbackend/DB/dummy/initialConfig.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const EVENT_NUM = 5;
33
const GUEST_NUM = 200;
44
const POLL_NUM = 20;
55
const CANDIDATE_NUM = 110; // ์ด ๊ฐ’์€ ์ž๋™์ƒ์„ฑ๋˜๋Š” candidates์˜ ์˜ˆ์ƒ ๊ฐฏ์ˆ˜๋ณด๋‹ค ์•ฝ๊ฐ„ ์ž‘์€ ์ˆ˜์ž„
6-
const VOTE_NUM = 1000;
6+
const VOTE_NUM = 100;
77

88
const config = {
99
INIT_SEED,

โ€Žbackend/DB/dummy/pollDummies.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import faker from "faker";
22
import config from "./initialConfig";
33

4-
const { INIT_SEED, EVENT_NUM, POLL_NUM } = config;
4+
const {INIT_SEED, EVENT_NUM, POLL_NUM} = config;
55

66
faker.seed(INIT_SEED);
77

@@ -11,9 +11,10 @@ export default function makePollDummy(number = POLL_NUM) {
1111
for (let i = 1; i <= number; ++i) {
1212
const pollName = faker.lorem.sentence();
1313
// 0: N์ง€์„ ๋‹ค(text), 1: N์ง€์„ ๋‹ค(date), 2: ๋ณ„์ ๋งค๊ธฐ๊ธฐ
14-
let type = i % 3;
14+
const type = i % 3;
1515
let pollType;
1616
let selectionType;
17+
1718
if (type === 0) {
1819
pollType = "nItems";
1920
selectionType = "text";
@@ -23,15 +24,17 @@ export default function makePollDummy(number = POLL_NUM) {
2324
} else {
2425
pollType = "rating";
2526
// let number = faker.random.number({ min: 2, max: 10 });
26-
let number = 10;
27+
const number = 10;
28+
2729
selectionType = number.toString();
2830
}
2931

3032
const allowDuplication = faker.random.boolean();
3133
const state = "closed";
3234
const createdAt = faker.date.past(1);
3335
const updatedAt = createdAt;
34-
const EventId = faker.random.number({ min: 1, max: EVENT_NUM });
36+
const pollDate = createdAt;
37+
const EventId = faker.random.number({min: 1, max: EVENT_NUM});
3538

3639
bulkPoll.push({
3740
pollName,
@@ -42,6 +45,7 @@ export default function makePollDummy(number = POLL_NUM) {
4245
createdAt,
4346
updatedAt,
4447
EventId,
48+
pollDate,
4549
});
4650
}
4751

โ€Žbackend/DB/dummy/questionDummies.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import faker from "faker";
22
import config from "./initialConfig";
33

4-
import { getGuestById } from "../queries/guest.js";
4+
import {getGuestById} from "../queries/guest.js";
55

66
export default async function makeQuestionDummy(number = 100) {
7-
const { INIT_SEED, GUEST_NUM } = config;
7+
const {INIT_SEED, GUEST_NUM} = config;
88

99
faker.seed(INIT_SEED);
1010
const bulkQuestion = [];
@@ -14,7 +14,7 @@ export default async function makeQuestionDummy(number = 100) {
1414
const createdAt = faker.date.past(1);
1515
const updatedAt = createdAt;
1616
const state = "active";
17-
const GuestId = faker.random.number({ min: 1, max: GUEST_NUM });
17+
const GuestId = faker.random.number({min: 1, max: GUEST_NUM});
1818
// eslint-disable-next-line no-await-in-loop
1919
const res = await getGuestById(GuestId);
2020
const EventId = res.dataValues.EventId;

โ€Žbackend/DB/dummy/voteDummies.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import faker from "faker";
22
import config from "./initialConfig";
33

4-
const { INIT_SEED, GUEST_NUM, VOTE_NUM, CANDIDATE_NUM } = config;
4+
const {INIT_SEED, GUEST_NUM, VOTE_NUM, CANDIDATE_NUM} = config;
55

66
faker.seed(INIT_SEED);
77

@@ -11,10 +11,10 @@ export default function makeVoteDummy(number = VOTE_NUM) {
1111
for (let i = 0; i < number; ++i) {
1212
const createdAt = faker.date.past(1);
1313
const updatedAt = createdAt;
14-
const GuestId = faker.random.number({ min: 1, max: GUEST_NUM });
15-
const CandidateId = faker.random.number({ min: 1, max: CANDIDATE_NUM });
14+
const GuestId = faker.random.number({min: 1, max: GUEST_NUM});
15+
const CandidateId = faker.random.number({min: 1, max: CANDIDATE_NUM});
1616

17-
bulkVoter.push({ createdAt, updatedAt, GuestId, CandidateId });
17+
bulkVoter.push({createdAt, updatedAt, GuestId, CandidateId});
1818
}
1919

2020
return bulkVoter;

โ€Žbackend/DB/migrations/20191112070328-create-poll.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ module.exports = {
2222
state: {
2323
type: Sequelize.STRING(10),
2424
},
25+
pollDate: {
26+
type: Sequelize.DATE,
27+
},
2528
createdAt: {
2629
allowNull: false,
2730
type: Sequelize.DATE,
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module.exports = {
2+
up: (queryInterface, Sequelize) =>
3+
queryInterface.addColumn(
4+
"Events", // name of Source model
5+
"isLive", // name of the key we're adding
6+
{
7+
type: Sequelize.BOOLEAN,
8+
defaultValue: false,
9+
},
10+
),
11+
down: (queryInterface, Sequelize) =>
12+
queryInterface.removeColumn(
13+
"Events",
14+
"isLive", // name of Source model
15+
),
16+
};

โ€Žbackend/DB/models/event.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ module.exports = (sequelize, DataTypes) => {
1818
type: DataTypes.BOOLEAN,
1919
defaultValue: false,
2020
},
21+
isLive: {
22+
type: DataTypes.BOOLEAN,
23+
defaultValue: false,
24+
},
2125
replyOption: {
2226
type: DataTypes.BOOLEAN,
2327
defaultValue: false,

โ€Žbackend/DB/models/poll.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ module.exports = (sequelize, DataTypes) => {
2323
state: {
2424
type: DataTypes.STRING(10),
2525
},
26+
pollDate: {
27+
type: DataTypes.DATE,
28+
},
2629
createdAt: {
2730
allowNull: false,
2831
type: DataTypes.DATE,
@@ -32,7 +35,7 @@ module.exports = (sequelize, DataTypes) => {
3235
type: DataTypes.DATE,
3336
},
3437
},
35-
{}
38+
{},
3639
);
3740

3841
Poll.associate = function(models) {

โ€Žbackend/DB/queries/candidate.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import models from "../models";
2+
23
const Sequelize = require("sequelize");
4+
35
const Op = Sequelize.Op;
46

57
export async function getCandidatesByPollId(pollIdList) {

โ€Žbackend/DB/queries/emoji.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ import models from "../models";
33

44
const Emoji = models.Emoji;
55

6-
export async function createEmoji({GuestId, QuestionId, name}) {
6+
export async function createEmoji({GuestId, QuestionId, name, EventId}) {
77
return Emoji.create({
88
GuestId,
99
QuestionId,
1010
name,
11+
EventId,
1112
});
1213
}
1314

@@ -31,7 +32,7 @@ export async function getEmojiCountBy({name, QuestionId}) {
3132

3233
export async function getEmojiGroupByQuestionId({EventId}) {
3334
return Emoji.findAll({
34-
attributes: ["QuestionId", "name", [sequelize.fn("count", "id"), "count"]],
35+
attributes: ["QuestionId", "name", [sequelize.fn("count", "id"), "count"], [sequelize.literal("MIN(createdAt)"), "createdAt"]],
3536
where: {EventId},
3637
group: ["QuestionId", "name"],
3738
raw: true,

0 commit comments

Comments
ย (0)