diff --git a/client/src/components/Board/Board.jsx b/client/src/components/Board/Board.jsx
index c2be982..a751d74 100755
--- a/client/src/components/Board/Board.jsx
+++ b/client/src/components/Board/Board.jsx
@@ -13,7 +13,7 @@ import { ReactComponent as PlusMathIcon } from '../../assets/images/plus-math-ic
import styles from './Board.module.css';
-const parseDNDId = (dndId) => parseInt(dndId.split(':').pop(), 10);
+const parseDndId = (dndId) => dndId.split(':')[1];
const Board = React.memo(
({
@@ -51,7 +51,7 @@ const Board = React.memo(
return;
}
- const id = parseDNDId(draggableId);
+ const id = parseDndId(draggableId);
switch (type) {
case DroppableTypes.LIST:
@@ -59,7 +59,7 @@ const Board = React.memo(
break;
case DroppableTypes.CARD:
- onCardMove(id, parseDNDId(destination.droppableId), destination.index);
+ onCardMove(id, parseDndId(destination.droppableId), destination.index);
break;
default:
diff --git a/client/src/components/Boards/Boards.jsx b/client/src/components/Boards/Boards.jsx
index 4567713..3b71c25 100755
--- a/client/src/components/Boards/Boards.jsx
+++ b/client/src/components/Boards/Boards.jsx
@@ -168,7 +168,7 @@ const Boards = React.memo(
Boards.propTypes = {
items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types
- currentId: PropTypes.number,
+ currentId: PropTypes.string,
isEditable: PropTypes.bool.isRequired,
onCreate: PropTypes.func.isRequired,
onUpdate: PropTypes.func.isRequired,
diff --git a/client/src/components/Card/Card.jsx b/client/src/components/Card/Card.jsx
index 58c470f..6424c3a 100755
--- a/client/src/components/Card/Card.jsx
+++ b/client/src/components/Card/Card.jsx
@@ -74,7 +74,7 @@ const Card = React.memo(
)}
{name}
{tasks.length > 0 && }
- {(dueDate || timer) && (
+ {(dueDate || timer || notificationsTotal > 0) && (
{notificationsTotal > 0 && (
+ {item.notificationsTotal > 0 && (
+
{item.notificationsTotal}
+ )}
{item.name}
@@ -69,7 +72,7 @@ const Projects = React.memo(({
Projects.propTypes = {
items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types
- currentId: PropTypes.number,
+ currentId: PropTypes.string,
isEditable: PropTypes.bool.isRequired,
onAdd: PropTypes.func.isRequired,
};
diff --git a/client/src/components/Projects/Projects.module.css b/client/src/components/Projects/Projects.module.css
index a063f88..d998f9e 100644
--- a/client/src/components/Projects/Projects.module.css
+++ b/client/src/components/Projects/Projects.module.css
@@ -59,6 +59,20 @@
margin: 0 !important;
}
+.notification {
+ background: #eb5a46;
+ color: #fff;
+ float: right;
+ font-size: 12px;
+ line-height: 20px;
+ padding: 0px 6px;
+ border: none;
+ border-radius: 3px;
+ outline: none;
+ text-align: left;
+ transition: background 0.3s ease;
+}
+
.open {
background: #555;
background-size: cover;
diff --git a/client/src/sagas/app/services/board.js b/client/src/sagas/app/services/board.js
index 110cc28..21390eb 100644
--- a/client/src/sagas/app/services/board.js
+++ b/client/src/sagas/app/services/board.js
@@ -2,15 +2,9 @@ import { call, put, select } from 'redux-saga/effects';
import { goToBoardService, goToProjectService } from './router';
import { createBoardRequest, deleteBoardRequest, updateBoardRequest } from '../requests';
-import {
- boardByIdSelector,
- maxIdSelector,
- nextBoardPositionSelector,
- pathSelector,
-} from '../../../selectors';
+import { boardByIdSelector, nextBoardPositionSelector, pathSelector } from '../../../selectors';
import { createBoard, deleteBoard, updateBoard } from '../../../actions';
-import { nextLocalId } from '../../../utils/local-id';
-import { Board } from '../../../models';
+import { createLocalId } from '../../../utils/local-id';
export function* createBoardService(projectId, data) {
const nextData = {
@@ -18,7 +12,7 @@ export function* createBoardService(projectId, data) {
position: yield select(nextBoardPositionSelector, projectId),
};
- const localId = nextLocalId(yield select(maxIdSelector, Board.modelName));
+ const localId = yield call(createLocalId);
yield put(
createBoard({
diff --git a/client/src/sagas/app/services/card.js b/client/src/sagas/app/services/card.js
index 087a4b2..ade180f 100644
--- a/client/src/sagas/app/services/card.js
+++ b/client/src/sagas/app/services/card.js
@@ -2,10 +2,9 @@ import { call, put, select } from 'redux-saga/effects';
import { goToBoardService } from './router';
import { createCardRequest, deleteCardRequest, updateCardRequest } from '../requests';
-import { maxIdSelector, nextCardPositionSelector, pathSelector } from '../../../selectors';
+import { nextCardPositionSelector, pathSelector } from '../../../selectors';
import { createCard, deleteCard, updateCard } from '../../../actions';
-import { nextLocalId } from '../../../utils/local-id';
-import { Card } from '../../../models';
+import { createLocalId } from '../../../utils/local-id';
export function* createCardService(listId, data) {
const nextData = {
@@ -13,7 +12,7 @@ export function* createCardService(listId, data) {
position: yield select(nextCardPositionSelector, listId),
};
- const localId = nextLocalId(yield select(maxIdSelector, Card.modelName));
+ const localId = yield call(createLocalId);
yield put(
createCard({
diff --git a/client/src/sagas/app/services/comment-action.js b/client/src/sagas/app/services/comment-action.js
index d9524d8..b1f47bd 100644
--- a/client/src/sagas/app/services/comment-action.js
+++ b/client/src/sagas/app/services/comment-action.js
@@ -5,14 +5,13 @@ import {
deleteCommentActionRequest,
updateCommentActionRequest,
} from '../requests';
-import { currentUserIdSelector, maxIdSelector, pathSelector } from '../../../selectors';
+import { currentUserIdSelector, pathSelector } from '../../../selectors';
import { createCommentAction, deleteCommentAction, updateCommentAction } from '../../../actions';
-import { nextLocalId } from '../../../utils/local-id';
-import { Action } from '../../../models';
+import { createLocalId } from '../../../utils/local-id';
import { ActionTypes } from '../../../constants/Enums';
export function* createCommentActionService(cardId, data) {
- const localId = nextLocalId(yield select(maxIdSelector, Action.modelName));
+ const localId = yield call(createLocalId);
const userId = yield select(currentUserIdSelector);
yield put(
diff --git a/client/src/sagas/app/services/label.js b/client/src/sagas/app/services/label.js
index 9edf29e..7d37a16 100644
--- a/client/src/sagas/app/services/label.js
+++ b/client/src/sagas/app/services/label.js
@@ -7,7 +7,7 @@ import {
deleteLabelRequest,
updateLabelRequest,
} from '../requests';
-import { maxIdSelector, pathSelector } from '../../../selectors';
+import { pathSelector } from '../../../selectors';
import {
addLabelToBoardFilter,
addLabelToCard,
@@ -17,11 +17,10 @@ import {
removeLabelFromCard,
updateLabel,
} from '../../../actions';
-import { nextLocalId } from '../../../utils/local-id';
-import { Label } from '../../../models';
+import { createLocalId } from '../../../utils/local-id';
export function* createLabelService(boardId, data) {
- const localId = nextLocalId(yield select(maxIdSelector, Label.modelName));
+ const localId = yield call(createLocalId);
yield put(
createLabel({
diff --git a/client/src/sagas/app/services/list.js b/client/src/sagas/app/services/list.js
index ce8c4b9..2effbff 100644
--- a/client/src/sagas/app/services/list.js
+++ b/client/src/sagas/app/services/list.js
@@ -1,15 +1,9 @@
import { call, put, select } from 'redux-saga/effects';
import { createListRequest, deleteListRequest, updateListRequest } from '../requests';
-import {
- listByIdSelector,
- maxIdSelector,
- nextListPositionSelector,
- pathSelector,
-} from '../../../selectors';
+import { listByIdSelector, nextListPositionSelector, pathSelector } from '../../../selectors';
import { createList, deleteList, updateList } from '../../../actions';
-import { nextLocalId } from '../../../utils/local-id';
-import { List } from '../../../models';
+import { createLocalId } from '../../../utils/local-id';
export function* createListService(boardId, data) {
const nextData = {
@@ -17,7 +11,7 @@ export function* createListService(boardId, data) {
position: yield select(nextListPositionSelector, boardId),
};
- const localId = nextLocalId(yield select(maxIdSelector, List.modelName));
+ const localId = yield call(createLocalId);
yield put(
createList({
diff --git a/client/src/sagas/app/services/project-membership.js b/client/src/sagas/app/services/project-membership.js
index 3d424bc..314c354 100644
--- a/client/src/sagas/app/services/project-membership.js
+++ b/client/src/sagas/app/services/project-membership.js
@@ -1,13 +1,12 @@
import { call, put, select } from 'redux-saga/effects';
import { createProjectMembershipRequest, deleteProjectMembershipRequest } from '../requests';
-import { maxIdSelector, pathSelector } from '../../../selectors';
+import { pathSelector } from '../../../selectors';
import { createProjectMembership, deleteProjectMembership } from '../../../actions';
-import { nextLocalId } from '../../../utils/local-id';
-import { ProjectMembership } from '../../../models';
+import { createLocalId } from '../../../utils/local-id';
export function* createProjectMembershipService(projectId, data) {
- const localId = nextLocalId(yield select(maxIdSelector, ProjectMembership.modelName));
+ const localId = yield call(createLocalId);
yield put(
createProjectMembership({
diff --git a/client/src/sagas/app/services/task.js b/client/src/sagas/app/services/task.js
index 060a56a..389112c 100644
--- a/client/src/sagas/app/services/task.js
+++ b/client/src/sagas/app/services/task.js
@@ -1,13 +1,12 @@
import { call, put, select } from 'redux-saga/effects';
import { createTaskRequest, deleteTaskRequest, updateTaskRequest } from '../requests';
-import { maxIdSelector, pathSelector } from '../../../selectors';
+import { pathSelector } from '../../../selectors';
import { createTask, deleteTask, updateTask } from '../../../actions';
-import { nextLocalId } from '../../../utils/local-id';
-import { Task } from '../../../models';
+import { createLocalId } from '../../../utils/local-id';
export function* createTaskService(cardId, data) {
- const localId = nextLocalId(yield select(maxIdSelector, Task.modelName));
+ const localId = yield call(createLocalId);
yield put(
createTask({
diff --git a/client/src/selectors/common.js b/client/src/selectors/common.js
index 2a33c4d..1c594f1 100755
--- a/client/src/selectors/common.js
+++ b/client/src/selectors/common.js
@@ -1,5 +1,3 @@
-export const maxIdSelector = ({ db }, modelName) => db[modelName].meta.maxId;
-
export const accessTokenSelector = ({ auth: { accessToken } }) => accessToken;
export const isAppInitializingSelector = ({ app: { isInitializing } }) => isInitializing;
diff --git a/client/src/utils/local-id.js b/client/src/utils/local-id.js
index 2e3e4a5..5508ce7 100755
--- a/client/src/utils/local-id.js
+++ b/client/src/utils/local-id.js
@@ -1,3 +1,3 @@
-export const nextLocalId = (maxId = 0) => maxId + Date.now() / 10000000000000;
+export const createLocalId = () => `local:${Date.now()}`;
-export const isLocalId = (id) => id % 1 !== 0;
+export const isLocalId = (id) => id.startsWith('local:');
diff --git a/server/api/controllers/actions/index.js b/server/api/controllers/actions/index.js
index 8632b75..f81a989 100755
--- a/server/api/controllers/actions/index.js
+++ b/server/api/controllers/actions/index.js
@@ -7,11 +7,13 @@ const Errors = {
module.exports = {
inputs: {
cardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
beforeId: {
- type: 'number'
+ type: 'string',
+ regex: /^[0-9]+$/
}
},
diff --git a/server/api/controllers/boards/create.js b/server/api/controllers/boards/create.js
index 191adbd..ea0457f 100755
--- a/server/api/controllers/boards/create.js
+++ b/server/api/controllers/boards/create.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
projectId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
position: {
diff --git a/server/api/controllers/boards/delete.js b/server/api/controllers/boards/delete.js
index 617f630..3fae5ed 100755
--- a/server/api/controllers/boards/delete.js
+++ b/server/api/controllers/boards/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/boards/show.js b/server/api/controllers/boards/show.js
index e9900eb..2b57a17 100755
--- a/server/api/controllers/boards/show.js
+++ b/server/api/controllers/boards/show.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/boards/update.js b/server/api/controllers/boards/update.js
index 6b8535a..d91242e 100755
--- a/server/api/controllers/boards/update.js
+++ b/server/api/controllers/boards/update.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
position: {
diff --git a/server/api/controllers/card-labels/create.js b/server/api/controllers/card-labels/create.js
index 6275c44..d28e16f 100755
--- a/server/api/controllers/card-labels/create.js
+++ b/server/api/controllers/card-labels/create.js
@@ -13,11 +13,13 @@ const Errors = {
module.exports = {
inputs: {
cardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
labelId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/card-labels/delete.js b/server/api/controllers/card-labels/delete.js
index 1dd7676..76596df 100755
--- a/server/api/controllers/card-labels/delete.js
+++ b/server/api/controllers/card-labels/delete.js
@@ -10,11 +10,13 @@ const Errors = {
module.exports = {
inputs: {
cardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
labelId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/card-memberships/create.js b/server/api/controllers/card-memberships/create.js
index fe10e8e..9e8812c 100755
--- a/server/api/controllers/card-memberships/create.js
+++ b/server/api/controllers/card-memberships/create.js
@@ -13,11 +13,13 @@ const Errors = {
module.exports = {
inputs: {
cardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
userId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/card-memberships/delete.js b/server/api/controllers/card-memberships/delete.js
index c861da8..559bc45 100755
--- a/server/api/controllers/card-memberships/delete.js
+++ b/server/api/controllers/card-memberships/delete.js
@@ -10,11 +10,13 @@ const Errors = {
module.exports = {
inputs: {
cardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
userId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/cards/create.js b/server/api/controllers/cards/create.js
index 05b2717..761b2dd 100755
--- a/server/api/controllers/cards/create.js
+++ b/server/api/controllers/cards/create.js
@@ -9,7 +9,8 @@ const Errors = {
module.exports = {
inputs: {
listId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
position: {
diff --git a/server/api/controllers/cards/delete.js b/server/api/controllers/cards/delete.js
index 8a9cb73..fc54584 100755
--- a/server/api/controllers/cards/delete.js
+++ b/server/api/controllers/cards/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/cards/show.js b/server/api/controllers/cards/show.js
index 38bd15c..88b7c7f 100755
--- a/server/api/controllers/cards/show.js
+++ b/server/api/controllers/cards/show.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/cards/update.js b/server/api/controllers/cards/update.js
index 851c1bb..b9eaefe 100755
--- a/server/api/controllers/cards/update.js
+++ b/server/api/controllers/cards/update.js
@@ -12,11 +12,13 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
listId: {
- type: 'number'
+ type: 'string',
+ regex: /^[0-9]+$/
},
position: {
type: 'number'
diff --git a/server/api/controllers/comment-actions/create.js b/server/api/controllers/comment-actions/create.js
index 4f6b9a5..7d9dcc4 100755
--- a/server/api/controllers/comment-actions/create.js
+++ b/server/api/controllers/comment-actions/create.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
cardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
text: {
diff --git a/server/api/controllers/comment-actions/delete.js b/server/api/controllers/comment-actions/delete.js
index 6e75abd..a27d5e7 100755
--- a/server/api/controllers/comment-actions/delete.js
+++ b/server/api/controllers/comment-actions/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/comment-actions/update.js b/server/api/controllers/comment-actions/update.js
index aef1e29..4fd7b48 100755
--- a/server/api/controllers/comment-actions/update.js
+++ b/server/api/controllers/comment-actions/update.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
text: {
diff --git a/server/api/controllers/labels/create.js b/server/api/controllers/labels/create.js
index fa5bcfa..24b9aaf 100755
--- a/server/api/controllers/labels/create.js
+++ b/server/api/controllers/labels/create.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
boardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
name: {
diff --git a/server/api/controllers/labels/delete.js b/server/api/controllers/labels/delete.js
index 0a7d50e..175b842 100755
--- a/server/api/controllers/labels/delete.js
+++ b/server/api/controllers/labels/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/labels/update.js b/server/api/controllers/labels/update.js
index e046199..f0e433a 100755
--- a/server/api/controllers/labels/update.js
+++ b/server/api/controllers/labels/update.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
name: {
diff --git a/server/api/controllers/lists/create.js b/server/api/controllers/lists/create.js
index 3bb9998..abbd8fc 100755
--- a/server/api/controllers/lists/create.js
+++ b/server/api/controllers/lists/create.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
boardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
position: {
diff --git a/server/api/controllers/lists/delete.js b/server/api/controllers/lists/delete.js
index 2fdb501..8b4655f 100755
--- a/server/api/controllers/lists/delete.js
+++ b/server/api/controllers/lists/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/lists/update.js b/server/api/controllers/lists/update.js
index 92235cc..7ea04d3 100755
--- a/server/api/controllers/lists/update.js
+++ b/server/api/controllers/lists/update.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
position: {
diff --git a/server/api/controllers/project-memberships/create.js b/server/api/controllers/project-memberships/create.js
index b72f93f..2f137be 100755
--- a/server/api/controllers/project-memberships/create.js
+++ b/server/api/controllers/project-memberships/create.js
@@ -13,11 +13,13 @@ const Errors = {
module.exports = {
inputs: {
projectId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
userId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/project-memberships/delete.js b/server/api/controllers/project-memberships/delete.js
index aee1d35..e45ed19 100755
--- a/server/api/controllers/project-memberships/delete.js
+++ b/server/api/controllers/project-memberships/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/projects/delete.js b/server/api/controllers/projects/delete.js
index 48e1a27..6829c98 100755
--- a/server/api/controllers/projects/delete.js
+++ b/server/api/controllers/projects/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/projects/update.js b/server/api/controllers/projects/update.js
index 203762f..aed0398 100755
--- a/server/api/controllers/projects/update.js
+++ b/server/api/controllers/projects/update.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
name: {
diff --git a/server/api/controllers/tasks/create.js b/server/api/controllers/tasks/create.js
index fc00bf6..51361f1 100755
--- a/server/api/controllers/tasks/create.js
+++ b/server/api/controllers/tasks/create.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
cardId: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
name: {
diff --git a/server/api/controllers/tasks/delete.js b/server/api/controllers/tasks/delete.js
index 9b12b9c..7d68b5e 100755
--- a/server/api/controllers/tasks/delete.js
+++ b/server/api/controllers/tasks/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/tasks/update.js b/server/api/controllers/tasks/update.js
index a107f51..6c93fd5 100755
--- a/server/api/controllers/tasks/update.js
+++ b/server/api/controllers/tasks/update.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
name: {
diff --git a/server/api/controllers/users/delete.js b/server/api/controllers/users/delete.js
index 0bc34a2..c9bf7a9 100755
--- a/server/api/controllers/users/delete.js
+++ b/server/api/controllers/users/delete.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/controllers/users/update.js b/server/api/controllers/users/update.js
index 1c37f35..2addaa3 100755
--- a/server/api/controllers/users/update.js
+++ b/server/api/controllers/users/update.js
@@ -7,7 +7,8 @@ const Errors = {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
},
isAdmin: {
diff --git a/server/api/controllers/users/upload-avatar.js b/server/api/controllers/users/upload-avatar.js
index 4df8b4e..5c10b32 100755
--- a/server/api/controllers/users/upload-avatar.js
+++ b/server/api/controllers/users/upload-avatar.js
@@ -65,7 +65,8 @@ const createReceiver = () => {
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
+ regex: /^[0-9]+$/,
required: true
}
},
diff --git a/server/api/helpers/create-card-membership.js b/server/api/helpers/create-card-membership.js
index fc533eb..26f8e13 100644
--- a/server/api/helpers/create-card-membership.js
+++ b/server/api/helpers/create-card-membership.js
@@ -6,7 +6,7 @@ module.exports = {
},
userOrUserId: {
type: 'ref',
- custom: value => _.isPlainObject(value) || _.isFinite(value),
+ custom: value => _.isPlainObject(value) || _.isString(value),
required: true
},
request: {
diff --git a/server/api/helpers/get-actions-for-card.js b/server/api/helpers/get-actions-for-card.js
index 71a7ce5..58d98f4 100644
--- a/server/api/helpers/get-actions-for-card.js
+++ b/server/api/helpers/get-actions-for-card.js
@@ -4,11 +4,11 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
beforeId: {
- type: 'number'
+ type: 'string'
}
},
diff --git a/server/api/helpers/get-boards-for-project.js b/server/api/helpers/get-boards-for-project.js
index 8d21088..64d514f 100644
--- a/server/api/helpers/get-boards-for-project.js
+++ b/server/api/helpers/get-boards-for-project.js
@@ -2,12 +2,12 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
exceptBoardId: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value)
+ custom: value => _.isString(value) || _.isArray(value)
}
},
diff --git a/server/api/helpers/get-card-labels-for-card.js b/server/api/helpers/get-card-labels-for-card.js
index f2efdef..01b9634 100644
--- a/server/api/helpers/get-card-labels-for-card.js
+++ b/server/api/helpers/get-card-labels-for-card.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-cards-for-board.js b/server/api/helpers/get-cards-for-board.js
index 8405816..2359872 100644
--- a/server/api/helpers/get-cards-for-board.js
+++ b/server/api/helpers/get-cards-for-board.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-cards-for-list.js b/server/api/helpers/get-cards-for-list.js
index 60a3e68..e365ec1 100644
--- a/server/api/helpers/get-cards-for-list.js
+++ b/server/api/helpers/get-cards-for-list.js
@@ -2,12 +2,12 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
exceptCardId: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value)
+ custom: value => _.isString(value) || _.isArray(value)
}
},
diff --git a/server/api/helpers/get-labels-for-board.js b/server/api/helpers/get-labels-for-board.js
index 18b2393..20e1f37 100644
--- a/server/api/helpers/get-labels-for-board.js
+++ b/server/api/helpers/get-labels-for-board.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-lists-for-board.js b/server/api/helpers/get-lists-for-board.js
index 556a6e2..637d99b 100644
--- a/server/api/helpers/get-lists-for-board.js
+++ b/server/api/helpers/get-lists-for-board.js
@@ -2,12 +2,12 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
exceptListId: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value)
+ custom: value => _.isString(value) || _.isArray(value)
}
},
diff --git a/server/api/helpers/get-membership-project-ids-for-user.js b/server/api/helpers/get-membership-project-ids-for-user.js
index 483a1af..6669728 100755
--- a/server/api/helpers/get-membership-project-ids-for-user.js
+++ b/server/api/helpers/get-membership-project-ids-for-user.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-membership-user-ids-for-project.js b/server/api/helpers/get-membership-user-ids-for-project.js
index fb89191..72d74c4 100755
--- a/server/api/helpers/get-membership-user-ids-for-project.js
+++ b/server/api/helpers/get-membership-user-ids-for-project.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
withProjectMemberships: {
diff --git a/server/api/helpers/get-memberships-for-card.js b/server/api/helpers/get-memberships-for-card.js
index aecba78..e77624e 100644
--- a/server/api/helpers/get-memberships-for-card.js
+++ b/server/api/helpers/get-memberships-for-card.js
@@ -2,12 +2,12 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
exceptUserId: {
- type: 'number',
- custom: value => _.isInteger(value) || _.isArray(value)
+ type: 'json',
+ custom: value => _.isString(value) || _.isArray(value)
}
},
diff --git a/server/api/helpers/get-memberships-for-project.js b/server/api/helpers/get-memberships-for-project.js
index 8f9257c..1c171ad 100644
--- a/server/api/helpers/get-memberships-for-project.js
+++ b/server/api/helpers/get-memberships-for-project.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-notifications-for-user.js b/server/api/helpers/get-notifications-for-user.js
index ff31b59..eda5a7f 100644
--- a/server/api/helpers/get-notifications-for-user.js
+++ b/server/api/helpers/get-notifications-for-user.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-project-memberships-for-user.js b/server/api/helpers/get-project-memberships-for-user.js
index a8a230b..691f802 100644
--- a/server/api/helpers/get-project-memberships-for-user.js
+++ b/server/api/helpers/get-project-memberships-for-user.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-subscription-user-ids-for-card.js b/server/api/helpers/get-subscription-user-ids-for-card.js
index d024f45..7d0426e 100644
--- a/server/api/helpers/get-subscription-user-ids-for-card.js
+++ b/server/api/helpers/get-subscription-user-ids-for-card.js
@@ -2,12 +2,12 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
exceptUserId: {
- type: 'number',
- custom: value => _.isInteger(value) || _.isArray(value)
+ type: 'json',
+ custom: value => _.isString(value) || _.isArray(value)
},
withCardSubscriptions: {
type: 'boolean',
diff --git a/server/api/helpers/get-subscriptions-by-user-for-card.js b/server/api/helpers/get-subscriptions-by-user-for-card.js
index d40ab08..bcb1bc7 100644
--- a/server/api/helpers/get-subscriptions-by-user-for-card.js
+++ b/server/api/helpers/get-subscriptions-by-user-for-card.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
userId: {
diff --git a/server/api/helpers/get-subscriptions-for-card.js b/server/api/helpers/get-subscriptions-for-card.js
index 4eb8c94..38f94d9 100644
--- a/server/api/helpers/get-subscriptions-for-card.js
+++ b/server/api/helpers/get-subscriptions-for-card.js
@@ -2,12 +2,12 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
},
exceptUserId: {
- type: 'number',
- custom: value => _.isInteger(value) || _.isArray(value)
+ type: 'json',
+ custom: value => _.isString(value) || _.isArray(value)
}
},
diff --git a/server/api/helpers/get-tasks-for-card.js b/server/api/helpers/get-tasks-for-card.js
index bd8d95d..af01e76 100644
--- a/server/api/helpers/get-tasks-for-card.js
+++ b/server/api/helpers/get-tasks-for-card.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
id: {
type: 'json',
- custom: value => _.isInteger(value) || _.isArray(value),
+ custom: value => _.isString(value) || _.isArray(value),
required: true
}
},
diff --git a/server/api/helpers/get-user.js b/server/api/helpers/get-user.js
index cddbf7f..5d319fe 100644
--- a/server/api/helpers/get-user.js
+++ b/server/api/helpers/get-user.js
@@ -2,7 +2,7 @@ module.exports = {
inputs: {
criteria: {
type: 'json',
- custom: value => _.isInteger(value) || _.isPlainObject(value),
+ custom: value => _.isString(value) || _.isPlainObject(value),
required: true
}
},
@@ -12,7 +12,7 @@ module.exports = {
deletedAt: null
};
- if (_.isInteger(inputs.criteria)) {
+ if (_.isString(inputs.criteria)) {
criteria.id = inputs.criteria;
} else if (_.isPlainObject(inputs.criteria)) {
Object.assign(criteria, inputs.criteria);
diff --git a/server/api/helpers/insert-to-positionables.js b/server/api/helpers/insert-to-positionables.js
index 9e606b8..9aff2e9 100755
--- a/server/api/helpers/insert-to-positionables.js
+++ b/server/api/helpers/insert-to-positionables.js
@@ -1,6 +1,6 @@
const GAP = 2 ** 14;
const MIN_GAP = 0.125;
-const MAX_POSITION = 2 ** 40; // 2 ** 50
+const MAX_POSITION = 2 ** 50;
const findBeginnings = positions => {
positions.unshift(0);
diff --git a/server/api/helpers/is-user-member-for-project.js b/server/api/helpers/is-user-member-for-project.js
index 4f3b2ce..eb96953 100755
--- a/server/api/helpers/is-user-member-for-project.js
+++ b/server/api/helpers/is-user-member-for-project.js
@@ -1,11 +1,11 @@
module.exports = {
inputs: {
id: {
- type: 'number',
+ type: 'string',
required: true
},
userId: {
- type: 'number',
+ type: 'string',
required: true
}
},
diff --git a/server/api/hooks/current-user/index.js b/server/api/hooks/current-user/index.js
index f110446..7d55a91 100644
--- a/server/api/hooks/current-user/index.js
+++ b/server/api/hooks/current-user/index.js
@@ -12,7 +12,7 @@ module.exports = function defineCurrentUserHook(sails) {
let id;
try {
- id = Number(sails.helpers.verifyToken(accessToken));
+ id = sails.helpers.verifyToken(accessToken);
} catch (unusedError) {
return;
}
diff --git a/server/api/models/Archive.js b/server/api/models/Archive.js
index 6cf5176..435d8c8 100755
--- a/server/api/models/Archive.js
+++ b/server/api/models/Archive.js
@@ -17,7 +17,7 @@ module.exports = {
columnName: 'from_model'
},
originalRecordId: {
- type: 'number',
+ type: 'string',
required: true,
columnName: 'original_record_id'
},
diff --git a/server/config/models.js b/server/config/models.js
index da33227..df093e0 100644
--- a/server/config/models.js
+++ b/server/config/models.js
@@ -66,7 +66,7 @@ module.exports.models = {
attributes: {
id: {
- type: 'number',
+ type: 'string',
autoIncrement: true,
},
createdAt: {
diff --git a/server/db/migrations/20180721020022_create_next_id_function.js b/server/db/migrations/20180721020022_create_next_id_function.js
new file mode 100644
index 0000000..f2d71bc
--- /dev/null
+++ b/server/db/migrations/20180721020022_create_next_id_function.js
@@ -0,0 +1,26 @@
+module.exports.up = knex => knex.raw(`
+ CREATE SEQUENCE next_id_seq;
+
+ CREATE FUNCTION next_id(OUT id BIGINT) AS $$
+ DECLARE
+ shard INT := 1;
+ epoch BIGINT := 1567191600000;
+
+ sequence BIGINT;
+ milliseconds BIGINT;
+ BEGIN
+ SELECT nextval('next_id_seq') % 1024 INTO sequence;
+ SELECT FLOOR(EXTRACT(EPOCH FROM clock_timestamp()) * 1000) INTO milliseconds;
+
+ id := (milliseconds - epoch) << 23;
+ id := id | (shard << 10);
+ id := id | (sequence);
+ END;
+ $$ LANGUAGE PLPGSQL;
+`);
+
+module.exports.down = knex => knex.raw(`
+ DROP SEQUENCE next_id_seq;
+
+ DROP FUNCTION next_id(OUT id BIGINT);
+`);
diff --git a/server/db/migrations/20180721021044_create_archive.js b/server/db/migrations/20180721021044_create_archive_table.js
similarity index 73%
rename from server/db/migrations/20180721021044_create_archive.js
rename to server/db/migrations/20180721021044_create_archive_table.js
index 6a95120..b0dbf35 100755
--- a/server/db/migrations/20180721021044_create_archive.js
+++ b/server/db/migrations/20180721021044_create_archive_table.js
@@ -2,10 +2,13 @@ module.exports.up = knex =>
knex.schema.createTable('archive', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
table.text('from_model').notNullable();
- table.integer('original_record_id').notNullable();
+ table.bigInteger('original_record_id').notNullable();
table.json('original_record').notNullable();
table.timestamp('created_at', true);
diff --git a/server/db/migrations/20180721220409_create_user.js b/server/db/migrations/20180721220409_create_user_table.js
similarity index 86%
rename from server/db/migrations/20180721220409_create_user.js
rename to server/db/migrations/20180721220409_create_user_table.js
index 99e3baa..8159747 100755
--- a/server/db/migrations/20180721220409_create_user.js
+++ b/server/db/migrations/20180721220409_create_user_table.js
@@ -3,7 +3,10 @@ module.exports.up = knex =>
.createTable('user', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
table.text('email').notNullable();
table.text('password').notNullable();
diff --git a/server/db/migrations/20180721233450_create_project.js b/server/db/migrations/20180721233450_create_project_table.js
similarity index 75%
rename from server/db/migrations/20180721233450_create_project.js
rename to server/db/migrations/20180721233450_create_project_table.js
index 6d41d83..9e1daa4 100755
--- a/server/db/migrations/20180721233450_create_project.js
+++ b/server/db/migrations/20180721233450_create_project_table.js
@@ -2,7 +2,10 @@ module.exports.up = knex =>
knex.schema.createTable('project', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
table.text('name').notNullable();
diff --git a/server/db/migrations/20180721234154_create_project_membership.js b/server/db/migrations/20180721234154_create_project_membership_table.js
similarity index 65%
rename from server/db/migrations/20180721234154_create_project_membership.js
rename to server/db/migrations/20180721234154_create_project_membership_table.js
index 75bf090..7a02ef7 100755
--- a/server/db/migrations/20180721234154_create_project_membership.js
+++ b/server/db/migrations/20180721234154_create_project_membership_table.js
@@ -2,10 +2,13 @@ module.exports.up = knex =>
knex.schema.createTable('project_membership', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('project_id').notNullable();
- table.integer('user_id').notNullable();
+ table.bigInteger('project_id').notNullable();
+ table.bigInteger('user_id').notNullable();
table.timestamp('created_at', true);
table.timestamp('updated_at', true);
diff --git a/server/db/migrations/20180722000627_create_board.js b/server/db/migrations/20180722000627_create_board_table.js
similarity index 75%
rename from server/db/migrations/20180722000627_create_board.js
rename to server/db/migrations/20180722000627_create_board_table.js
index 4144f67..56204f0 100755
--- a/server/db/migrations/20180722000627_create_board.js
+++ b/server/db/migrations/20180722000627_create_board_table.js
@@ -2,9 +2,12 @@ module.exports.up = knex =>
knex.schema.createTable('board', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('project_id').notNullable();
+ table.bigInteger('project_id').notNullable();
table.specificType('position', 'double precision').notNullable();
table.text('name').notNullable();
diff --git a/server/db/migrations/20180722003437_create_list.js b/server/db/migrations/20180722003437_create_list_table.js
similarity index 75%
rename from server/db/migrations/20180722003437_create_list.js
rename to server/db/migrations/20180722003437_create_list_table.js
index fac1fc2..3b3edec 100755
--- a/server/db/migrations/20180722003437_create_list.js
+++ b/server/db/migrations/20180722003437_create_list_table.js
@@ -2,9 +2,12 @@ module.exports.up = knex =>
knex.schema.createTable('list', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('board_id').notNullable();
+ table.bigInteger('board_id').notNullable();
table.specificType('position', 'double precision').notNullable();
table.text('name').notNullable();
diff --git a/server/db/migrations/20180722003502_create_label.js b/server/db/migrations/20180722003502_create_label_table.js
similarity index 71%
rename from server/db/migrations/20180722003502_create_label.js
rename to server/db/migrations/20180722003502_create_label_table.js
index 948a25a..77075d4 100755
--- a/server/db/migrations/20180722003502_create_label.js
+++ b/server/db/migrations/20180722003502_create_label_table.js
@@ -2,9 +2,12 @@ module.exports.up = knex =>
knex.schema.createTable('label', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('board_id').notNullable();
+ table.bigInteger('board_id').notNullable();
table.text('name');
table.text('color').notNullable();
diff --git a/server/db/migrations/20180722003614_create_card.js b/server/db/migrations/20180722003614_create_card_table.js
similarity index 73%
rename from server/db/migrations/20180722003614_create_card.js
rename to server/db/migrations/20180722003614_create_card_table.js
index 2f5d504..4b50225 100755
--- a/server/db/migrations/20180722003614_create_card.js
+++ b/server/db/migrations/20180722003614_create_card_table.js
@@ -2,10 +2,13 @@ module.exports.up = knex =>
knex.schema.createTable('card', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('list_id').notNullable();
- table.integer('board_id').notNullable();
+ table.bigInteger('list_id').notNullable();
+ table.bigInteger('board_id').notNullable();
table.specificType('position', 'double precision').notNullable();
table.text('name').notNullable();
diff --git a/server/db/migrations/20180722005122_create_card_subscription.js b/server/db/migrations/20180722005122_create_card_subscription_table.js
similarity index 68%
rename from server/db/migrations/20180722005122_create_card_subscription.js
rename to server/db/migrations/20180722005122_create_card_subscription_table.js
index f572121..8398869 100755
--- a/server/db/migrations/20180722005122_create_card_subscription.js
+++ b/server/db/migrations/20180722005122_create_card_subscription_table.js
@@ -2,10 +2,13 @@ module.exports.up = knex =>
knex.schema.createTable('card_subscription', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('card_id').notNullable();
- table.integer('user_id').notNullable();
+ table.bigInteger('card_id').notNullable();
+ table.bigInteger('user_id').notNullable();
table.boolean('is_permanent').notNullable();
diff --git a/server/db/migrations/20180722005359_create_card_membership.js b/server/db/migrations/20180722005359_create_card_membership_table.js
similarity index 65%
rename from server/db/migrations/20180722005359_create_card_membership.js
rename to server/db/migrations/20180722005359_create_card_membership_table.js
index d8b7388..ce720d4 100755
--- a/server/db/migrations/20180722005359_create_card_membership.js
+++ b/server/db/migrations/20180722005359_create_card_membership_table.js
@@ -2,10 +2,13 @@ module.exports.up = knex =>
knex.schema.createTable('card_membership', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('card_id').notNullable();
- table.integer('user_id').notNullable();
+ table.bigInteger('card_id').notNullable();
+ table.bigInteger('user_id').notNullable();
table.timestamp('created_at', true);
table.timestamp('updated_at', true);
diff --git a/server/db/migrations/20180722005928_create_card_label.js b/server/db/migrations/20180722005928_create_card_label_table.js
similarity index 65%
rename from server/db/migrations/20180722005928_create_card_label.js
rename to server/db/migrations/20180722005928_create_card_label_table.js
index 3d900d3..02eeacc 100755
--- a/server/db/migrations/20180722005928_create_card_label.js
+++ b/server/db/migrations/20180722005928_create_card_label_table.js
@@ -2,10 +2,13 @@ module.exports.up = knex =>
knex.schema.createTable('card_label', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('card_id').notNullable();
- table.integer('label_id').notNullable();
+ table.bigInteger('card_id').notNullable();
+ table.bigInteger('label_id').notNullable();
table.timestamp('created_at', true);
table.timestamp('updated_at', true);
diff --git a/server/db/migrations/20180722006570_create_task.js b/server/db/migrations/20180722006570_create_task_table.js
similarity index 73%
rename from server/db/migrations/20180722006570_create_task.js
rename to server/db/migrations/20180722006570_create_task_table.js
index c7db320..ead0bed 100755
--- a/server/db/migrations/20180722006570_create_task.js
+++ b/server/db/migrations/20180722006570_create_task_table.js
@@ -2,9 +2,12 @@ module.exports.up = knex =>
knex.schema.createTable('task', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('card_id').notNullable();
+ table.bigInteger('card_id').notNullable();
table.text('name').notNullable();
table.boolean('is_completed').notNullable();
diff --git a/server/db/migrations/20181024220134_create_action.js b/server/db/migrations/20181024220134_create_action_table.js
similarity index 66%
rename from server/db/migrations/20181024220134_create_action.js
rename to server/db/migrations/20181024220134_create_action_table.js
index 3604c10..cd06768 100755
--- a/server/db/migrations/20181024220134_create_action.js
+++ b/server/db/migrations/20181024220134_create_action_table.js
@@ -2,10 +2,13 @@ module.exports.up = knex =>
knex.schema.createTable('action', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('card_id').notNullable();
- table.integer('user_id').notNullable();
+ table.bigInteger('card_id').notNullable();
+ table.bigInteger('user_id').notNullable();
table.text('type').notNullable();
table.jsonb('data').notNullable();
diff --git a/server/db/migrations/20181112104653_create_notification.js b/server/db/migrations/20181112104653_create_notification_table.js
similarity index 65%
rename from server/db/migrations/20181112104653_create_notification.js
rename to server/db/migrations/20181112104653_create_notification_table.js
index 70c13e7..c5b3759 100755
--- a/server/db/migrations/20181112104653_create_notification.js
+++ b/server/db/migrations/20181112104653_create_notification_table.js
@@ -2,11 +2,14 @@ module.exports.up = knex =>
knex.schema.createTable('notification', table => {
/* Columns */
- table.increments();
+ table
+ .bigInteger('id')
+ .primary()
+ .defaultTo(knex.raw('next_id()'));
- table.integer('user_id').notNullable();
- table.integer('action_id').notNullable();
- table.integer('card_id').notNullable();
+ table.bigInteger('user_id').notNullable();
+ table.bigInteger('action_id').notNullable();
+ table.bigInteger('card_id').notNullable();
table.boolean('is_read').notNullable();