chore: Move to Typescript (#2783)
This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously. closes #1282
This commit is contained in:
@@ -1,179 +1,175 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('teams', {
|
||||
await queryInterface.createTable("teams", {
|
||||
id: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
name: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: true,
|
||||
},
|
||||
slackId: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: true,
|
||||
unique: true,
|
||||
},
|
||||
slackData: {
|
||||
type: 'JSONB',
|
||||
type: "JSONB",
|
||||
allowNull: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.createTable('atlases', {
|
||||
await queryInterface.createTable("atlases", {
|
||||
id: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
name: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: true,
|
||||
},
|
||||
description: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: true,
|
||||
},
|
||||
type: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: true,
|
||||
},
|
||||
navigationTree: {
|
||||
type: 'JSONB',
|
||||
type: "JSONB",
|
||||
allowNull: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
teamId: {
|
||||
type: 'UUID',
|
||||
allowNull: false
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.createTable('users', {
|
||||
await queryInterface.createTable("users", {
|
||||
id: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
email: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: false,
|
||||
},
|
||||
username: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: false,
|
||||
},
|
||||
name: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: false,
|
||||
},
|
||||
isAdmin: {
|
||||
type: 'BOOLEAN',
|
||||
type: "BOOLEAN",
|
||||
allowNull: true,
|
||||
defaultValue: false,
|
||||
},
|
||||
slackAccessToken: {
|
||||
type: 'bytea',
|
||||
type: "bytea",
|
||||
allowNull: true,
|
||||
},
|
||||
slackId: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
},
|
||||
slackData: {
|
||||
type: 'JSONB',
|
||||
type: "JSONB",
|
||||
allowNull: true,
|
||||
},
|
||||
jwtSecret: {
|
||||
type: 'bytea',
|
||||
type: "bytea",
|
||||
allowNull: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
teamId: {
|
||||
type: 'UUID',
|
||||
allowNull: true
|
||||
type: "UUID",
|
||||
allowNull: true,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.createTable('documents', {
|
||||
await queryInterface.createTable("documents", {
|
||||
id: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
urlId: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: false,
|
||||
unique: true,
|
||||
},
|
||||
private: {
|
||||
type: 'BOOLEAN',
|
||||
type: "BOOLEAN",
|
||||
allowNull: false,
|
||||
defaultValue: true,
|
||||
},
|
||||
title: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: false,
|
||||
},
|
||||
text: {
|
||||
type: 'TEXT',
|
||||
type: "TEXT",
|
||||
allowNull: true,
|
||||
},
|
||||
html: {
|
||||
type: 'TEXT',
|
||||
type: "TEXT",
|
||||
allowNull: true,
|
||||
},
|
||||
preview: {
|
||||
type: 'TEXT',
|
||||
type: "TEXT",
|
||||
allowNull: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
userId: {
|
||||
type: 'UUID',
|
||||
allowNull: true
|
||||
type: "UUID",
|
||||
allowNull: true,
|
||||
},
|
||||
atlasId: {
|
||||
type: 'UUID',
|
||||
allowNull: true
|
||||
type: "UUID",
|
||||
allowNull: true,
|
||||
},
|
||||
teamId: {
|
||||
type: 'UUID',
|
||||
allowNull: true
|
||||
type: "UUID",
|
||||
allowNull: true,
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropAllTables();
|
||||
},
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'parentDocumentId', {
|
||||
await queryInterface.addColumn("documents", "parentDocumentId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'parentDocumentId');
|
||||
await queryInterface.removeColumn("documents", "parentDocumentId");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,27 +1,23 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex('documents', ['urlId']);
|
||||
await queryInterface.addIndex('documents', ['id', 'atlasId']);
|
||||
await queryInterface.addIndex('documents', ['id', 'teamId']);
|
||||
await queryInterface.addIndex('documents', ['parentDocumentId', 'atlasId']);
|
||||
|
||||
await queryInterface.addIndex('atlases', ['id', 'teamId']);
|
||||
|
||||
await queryInterface.addIndex('teams', ['slackId']);
|
||||
|
||||
await queryInterface.addIndex('users', ['slackId']);
|
||||
await queryInterface.addIndex("documents", ["urlId"]);
|
||||
await queryInterface.addIndex("documents", ["id", "atlasId"]);
|
||||
await queryInterface.addIndex("documents", ["id", "teamId"]);
|
||||
await queryInterface.addIndex("documents", ["parentDocumentId", "atlasId"]);
|
||||
await queryInterface.addIndex("atlases", ["id", "teamId"]);
|
||||
await queryInterface.addIndex("teams", ["slackId"]);
|
||||
await queryInterface.addIndex("users", ["slackId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex('documents', ['urlId']);
|
||||
await queryInterface.removeIndex('documents', ['id', 'atlasId']);
|
||||
await queryInterface.removeIndex('documents', ['id', 'teamId']);
|
||||
await queryInterface.removeIndex('documents', ['parentDocumentId', 'atlasId']);
|
||||
|
||||
await queryInterface.removeIndex('atlases', ['id', 'teamId']);
|
||||
|
||||
await queryInterface.removeIndex('teams', ['slackId']);
|
||||
|
||||
await queryInterface.removeIndex('users', ['slackId']);
|
||||
await queryInterface.removeIndex("documents", ["urlId"]);
|
||||
await queryInterface.removeIndex("documents", ["id", "atlasId"]);
|
||||
await queryInterface.removeIndex("documents", ["id", "teamId"]);
|
||||
await queryInterface.removeIndex("documents", [
|
||||
"parentDocumentId",
|
||||
"atlasId",
|
||||
]);
|
||||
await queryInterface.removeIndex("atlases", ["id", "teamId"]);
|
||||
await queryInterface.removeIndex("teams", ["slackId"]);
|
||||
await queryInterface.removeIndex("users", ["slackId"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,70 +1,66 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('revisions', {
|
||||
await queryInterface.createTable("revisions", {
|
||||
id: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
title: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: false,
|
||||
},
|
||||
text: {
|
||||
type: 'TEXT',
|
||||
type: "TEXT",
|
||||
allowNull: true,
|
||||
},
|
||||
html: {
|
||||
type: 'TEXT',
|
||||
type: "TEXT",
|
||||
allowNull: true,
|
||||
},
|
||||
preview: {
|
||||
type: 'TEXT',
|
||||
type: "TEXT",
|
||||
allowNull: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
userId: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
documentId: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'documents',
|
||||
onDelete: 'CASCADE',
|
||||
model: "documents",
|
||||
onDelete: "CASCADE",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.addColumn('documents', 'lastModifiedById', {
|
||||
type: 'UUID',
|
||||
await queryInterface.addColumn("documents", "lastModifiedById", {
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.addColumn('documents', 'revisionCount', {
|
||||
type: 'INTEGER',
|
||||
await queryInterface.addColumn("documents", "revisionCount", {
|
||||
type: "INTEGER",
|
||||
defaultValue: 0,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('revisions');
|
||||
|
||||
await queryInterface.removeColumn('documents', 'lastModifiedById');
|
||||
await queryInterface.removeColumn('documents', 'revisionCount');
|
||||
await queryInterface.dropTable("revisions");
|
||||
await queryInterface.removeColumn("documents", "lastModifiedById");
|
||||
await queryInterface.removeColumn("documents", "revisionCount");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -16,7 +16,6 @@ $$ LANGUAGE plpgsql;
|
||||
CREATE TRIGGER documents_tsvectorupdate BEFORE INSERT OR UPDATE
|
||||
ON documents FOR EACH ROW EXECUTE PROCEDURE documents_search_trigger();
|
||||
`;
|
||||
|
||||
const searchCollection = `
|
||||
ALTER TABLE atlases ADD COLUMN "searchVector" tsvector;
|
||||
CREATE INDEX atlases_tsv_idx ON atlases USING gin("searchVector");
|
||||
@@ -33,11 +32,9 @@ $$ LANGUAGE plpgsql;
|
||||
CREATE TRIGGER atlases_tsvectorupdate BEFORE INSERT OR UPDATE
|
||||
ON atlases FOR EACH ROW EXECUTE PROCEDURE atlases_search_trigger();
|
||||
`;
|
||||
|
||||
await queryInterface.sequelize.query(searchDocument);
|
||||
await queryInterface.sequelize.query(searchCollection);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
// TODO?
|
||||
},
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('atlases', 'creatorId', {
|
||||
await queryInterface.addColumn("atlases", "creatorId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('atlases', 'creatorId');
|
||||
await queryInterface.removeColumn("atlases", "creatorId");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('atlases', 'deletedAt', {
|
||||
await queryInterface.addColumn("atlases", "deletedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
});
|
||||
|
||||
await queryInterface.addColumn('documents', 'deletedAt', {
|
||||
await queryInterface.addColumn("documents", "deletedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('atlases', 'deletedAt');
|
||||
await queryInterface.removeColumn('documents', 'deletedAt');
|
||||
await queryInterface.removeColumn("atlases", "deletedAt");
|
||||
await queryInterface.removeColumn("documents", "deletedAt");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,47 +1,51 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
// Remove old indeces
|
||||
await queryInterface.removeIndex('documents', ['urlId']);
|
||||
await queryInterface.removeIndex('documents', ['id', 'atlasId']);
|
||||
await queryInterface.removeIndex('documents', ['id', 'teamId']);
|
||||
await queryInterface.removeIndex('documents', ['parentDocumentId', 'atlasId']);
|
||||
|
||||
await queryInterface.removeIndex('atlases', ['id', 'teamId']);
|
||||
|
||||
await queryInterface.removeIndex("documents", ["urlId"]);
|
||||
await queryInterface.removeIndex("documents", ["id", "atlasId"]);
|
||||
await queryInterface.removeIndex("documents", ["id", "teamId"]);
|
||||
await queryInterface.removeIndex("documents", [
|
||||
"parentDocumentId",
|
||||
"atlasId",
|
||||
]);
|
||||
await queryInterface.removeIndex("atlases", ["id", "teamId"]);
|
||||
// Add new ones
|
||||
await queryInterface.addIndex('documents', ['id', 'deletedAt']);
|
||||
await queryInterface.addIndex('documents', ['urlId', 'deletedAt']);
|
||||
await queryInterface.addIndex('documents', ['id', 'atlasId', 'deletedAt']);
|
||||
await queryInterface.addIndex('documents', ['id', 'teamId', 'deletedAt']);
|
||||
await queryInterface.addIndex('documents', [
|
||||
'parentDocumentId',
|
||||
'atlasId',
|
||||
'deletedAt',
|
||||
await queryInterface.addIndex("documents", ["id", "deletedAt"]);
|
||||
await queryInterface.addIndex("documents", ["urlId", "deletedAt"]);
|
||||
await queryInterface.addIndex("documents", ["id", "atlasId", "deletedAt"]);
|
||||
await queryInterface.addIndex("documents", ["id", "teamId", "deletedAt"]);
|
||||
await queryInterface.addIndex("documents", [
|
||||
"parentDocumentId",
|
||||
"atlasId",
|
||||
"deletedAt",
|
||||
]);
|
||||
|
||||
await queryInterface.addIndex('atlases', ['id', 'deletedAt']);
|
||||
await queryInterface.addIndex('atlases', ['id', 'teamId', 'deletedAt']);
|
||||
await queryInterface.addIndex("atlases", ["id", "deletedAt"]);
|
||||
await queryInterface.addIndex("atlases", ["id", "teamId", "deletedAt"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex('documents', ['urlId']);
|
||||
await queryInterface.addIndex('documents', ['id', 'atlasId']);
|
||||
await queryInterface.addIndex('documents', ['id', 'teamId']);
|
||||
await queryInterface.addIndex('documents', ['parentDocumentId', 'atlasId']);
|
||||
|
||||
await queryInterface.addIndex('atlases', ['id', 'teamId']);
|
||||
|
||||
await queryInterface.removeIndex('documents', ['id', 'deletedAt']);
|
||||
await queryInterface.removeIndex('documents', ['urlId', 'deletedAt']);
|
||||
await queryInterface.removeIndex('documents', ['id', 'atlasId', 'deletedAt']);
|
||||
await queryInterface.removeIndex('documents', ['id', 'teamId', 'deletedAt']);
|
||||
await queryInterface.removeIndex('documents', [
|
||||
'parentDocumentId',
|
||||
'atlasId',
|
||||
'deletedAt',
|
||||
await queryInterface.addIndex("documents", ["urlId"]);
|
||||
await queryInterface.addIndex("documents", ["id", "atlasId"]);
|
||||
await queryInterface.addIndex("documents", ["id", "teamId"]);
|
||||
await queryInterface.addIndex("documents", ["parentDocumentId", "atlasId"]);
|
||||
await queryInterface.addIndex("atlases", ["id", "teamId"]);
|
||||
await queryInterface.removeIndex("documents", ["id", "deletedAt"]);
|
||||
await queryInterface.removeIndex("documents", ["urlId", "deletedAt"]);
|
||||
await queryInterface.removeIndex("documents", [
|
||||
"id",
|
||||
"atlasId",
|
||||
"deletedAt",
|
||||
]);
|
||||
|
||||
await queryInterface.removeIndex('atlases', ['id', 'deletedAt']);
|
||||
await queryInterface.removeIndex('atlases', ['id', 'teamId', 'deletedAt']);
|
||||
await queryInterface.removeIndex("documents", [
|
||||
"id",
|
||||
"teamId",
|
||||
"deletedAt",
|
||||
]);
|
||||
await queryInterface.removeIndex("documents", [
|
||||
"parentDocumentId",
|
||||
"atlasId",
|
||||
"deletedAt",
|
||||
]);
|
||||
await queryInterface.removeIndex("atlases", ["id", "deletedAt"]);
|
||||
await queryInterface.removeIndex("atlases", ["id", "teamId", "deletedAt"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'createdById', {
|
||||
type: 'UUID',
|
||||
await queryInterface.addColumn("documents", "createdById", {
|
||||
type: "UUID",
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'createdById');
|
||||
await queryInterface.removeColumn("documents", "createdById");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'collaboratorIds', {
|
||||
await queryInterface.addColumn("documents", "collaboratorIds", {
|
||||
type: Sequelize.ARRAY(Sequelize.UUID),
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'collaboratorIds');
|
||||
await queryInterface.removeColumn("documents", "collaboratorIds");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('atlases', 'urlId', {
|
||||
await queryInterface.addColumn("atlases", "urlId", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('atlases', 'urlId');
|
||||
await queryInterface.removeColumn("atlases", "urlId");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex('revisions', ['documentId']);
|
||||
await queryInterface.addIndex("revisions", ["documentId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex('revisions', ['documentId']);
|
||||
await queryInterface.removeIndex("revisions", ["documentId"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,40 +1,39 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('apiKeys', {
|
||||
await queryInterface.createTable("apiKeys", {
|
||||
id: {
|
||||
type: 'UUID',
|
||||
type: "UUID",
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
name: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: true,
|
||||
},
|
||||
secret: {
|
||||
type: 'CHARACTER VARYING',
|
||||
type: "CHARACTER VARYING",
|
||||
allowNull: false,
|
||||
unique: true,
|
||||
},
|
||||
userId: {
|
||||
type: 'UUID',
|
||||
allowNull: true
|
||||
type: "UUID",
|
||||
allowNull: true,
|
||||
},
|
||||
createdAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: false,
|
||||
},
|
||||
deletedAt: {
|
||||
type: 'TIMESTAMP WITH TIME ZONE',
|
||||
type: "TIMESTAMP WITH TIME ZONE",
|
||||
allowNull: true,
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('apiKeys');
|
||||
await queryInterface.dropTable("apiKeys");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex('apiKeys', ['secret', 'deletedAt']);
|
||||
await queryInterface.addIndex('apiKeys', ['userId', 'deletedAt']);
|
||||
await queryInterface.addIndex("apiKeys", ["secret", "deletedAt"]);
|
||||
await queryInterface.addIndex("apiKeys", ["userId", "deletedAt"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex('apiKeys', ['secret', 'deletedAt']);
|
||||
await queryInterface.removeIndex('apiKeys', ['userId', 'deletedAt']);
|
||||
await queryInterface.removeIndex("apiKeys", ["secret", "deletedAt"]);
|
||||
await queryInterface.removeIndex("apiKeys", ["userId", "deletedAt"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'slackId', {
|
||||
await queryInterface.changeColumn("users", "slackId", {
|
||||
type: Sequelize.STRING,
|
||||
unique: false,
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.changeColumn('teams', 'slackId', {
|
||||
await queryInterface.changeColumn("teams", "slackId", {
|
||||
type: Sequelize.STRING,
|
||||
unique: false,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'slackId', {
|
||||
await queryInterface.changeColumn("users", "slackId", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
});
|
||||
await queryInterface.changeColumn('teams', 'slackId', {
|
||||
await queryInterface.changeColumn("teams", "slackId", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
|
||||
@@ -1,25 +1,23 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'email', {
|
||||
await queryInterface.changeColumn("users", "email", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
});
|
||||
await queryInterface.changeColumn('users', 'username', {
|
||||
await queryInterface.changeColumn("users", "username", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'email', {
|
||||
await queryInterface.changeColumn("users", "email", {
|
||||
type: Sequelize.STRING,
|
||||
unique: false,
|
||||
allowNull: true,
|
||||
});
|
||||
|
||||
await queryInterface.changeColumn('users', 'username', {
|
||||
await queryInterface.changeColumn("users", "username", {
|
||||
type: Sequelize.STRING,
|
||||
unique: false,
|
||||
allowNull: true,
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('users', 'passwordDigest', {
|
||||
await queryInterface.addColumn("users", "passwordDigest", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, _Sequelize) => {
|
||||
await queryInterface.removeColumn('users', 'passwordDigest');
|
||||
await queryInterface.removeColumn("users", "passwordDigest");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.renameTable('atlases', 'collections');
|
||||
await queryInterface.addColumn('collections', 'documentStructure', {
|
||||
await queryInterface.renameTable("atlases", "collections");
|
||||
await queryInterface.addColumn("collections", "documentStructure", {
|
||||
type: Sequelize.JSONB,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, _Sequelize) => {
|
||||
await queryInterface.renameTable('collections', 'atlases');
|
||||
await queryInterface.removeColumn('atlases', 'documentStructure');
|
||||
await queryInterface.renameTable("collections", "atlases");
|
||||
await queryInterface.removeColumn("atlases", "documentStructure");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,41 +1,39 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface
|
||||
.createTable('views', {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
documentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
userId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
count: {
|
||||
type: Sequelize.INTEGER,
|
||||
allowNull: false,
|
||||
defaultValue: 1,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
await queryInterface.addIndex('views', ['documentId', 'userId'], {
|
||||
indicesType: 'UNIQUE',
|
||||
});
|
||||
await queryInterface.createTable("views", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
documentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
userId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
count: {
|
||||
type: Sequelize.INTEGER,
|
||||
allowNull: false,
|
||||
defaultValue: 1,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
await queryInterface.addIndex("views", ["documentId", "userId"], {
|
||||
indicesType: "UNIQUE",
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex('views', ['documentId', 'userId']);
|
||||
await queryInterface.dropTable('views');
|
||||
await queryInterface.removeIndex("views", ["documentId", "userId"]);
|
||||
await queryInterface.dropTable("views");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,36 +1,34 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface
|
||||
.createTable('stars', {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
documentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
userId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
await queryInterface.addIndex('stars', ['documentId', 'userId'], {
|
||||
indicesType: 'UNIQUE',
|
||||
await queryInterface.createTable("stars", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
documentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
userId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
await queryInterface.addIndex("stars", ["documentId", "userId"], {
|
||||
indicesType: "UNIQUE",
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex('stars', ['documentId', 'userId']);
|
||||
await queryInterface.dropTable('stars');
|
||||
await queryInterface.removeIndex("stars", ["documentId", "userId"]);
|
||||
await queryInterface.dropTable("stars");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeConstraint('users', 'users_email_key', {})
|
||||
await queryInterface.removeConstraint('users', 'users_username_key', {})
|
||||
await queryInterface.removeConstraint("users", "users_email_key", {});
|
||||
await queryInterface.removeConstraint("users", "users_username_key", {});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'email', {
|
||||
await queryInterface.changeColumn("users", "email", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
});
|
||||
await queryInterface.changeColumn('users', 'username', {
|
||||
await queryInterface.changeColumn("users", "username", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'slackId', {
|
||||
await queryInterface.changeColumn("users", "slackId", {
|
||||
type: Sequelize.STRING,
|
||||
unique: true,
|
||||
allowNull: false,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeConstraint('users', 'users_slack_id_idx');
|
||||
await queryInterface.removeConstraint("users", "users_slack_id_idx");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'emoji', {
|
||||
await queryInterface.addColumn("documents", "emoji", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, _Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'emoji');
|
||||
await queryInterface.removeColumn("documents", "emoji");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,56 +1,55 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('documents', 'atlasId', {
|
||||
await queryInterface.changeColumn("documents", "atlasId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
onDelete: 'cascade',
|
||||
onDelete: "cascade",
|
||||
references: {
|
||||
model: 'collections',
|
||||
model: "collections",
|
||||
},
|
||||
});
|
||||
await queryInterface.changeColumn('documents', 'userId', {
|
||||
await queryInterface.changeColumn("documents", "userId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
});
|
||||
await queryInterface.changeColumn('documents', 'parentDocumentId', {
|
||||
await queryInterface.changeColumn("documents", "parentDocumentId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'documents',
|
||||
model: "documents",
|
||||
},
|
||||
});
|
||||
await queryInterface.changeColumn('documents', 'teamId', {
|
||||
await queryInterface.changeColumn("documents", "teamId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
onDelete: 'cascade',
|
||||
onDelete: "cascade",
|
||||
references: {
|
||||
model: 'teams',
|
||||
model: "teams",
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.sequelize.query(
|
||||
'ALTER TABLE documents DROP CONSTRAINT "atlasId_foreign_idx";'
|
||||
);
|
||||
await queryInterface.removeIndex('documents', 'atlasId_foreign_idx');
|
||||
await queryInterface.removeIndex("documents", "atlasId_foreign_idx");
|
||||
await queryInterface.sequelize.query(
|
||||
'ALTER TABLE documents DROP CONSTRAINT "userId_foreign_idx";'
|
||||
);
|
||||
await queryInterface.removeIndex('documents', 'userId_foreign_idx');
|
||||
await queryInterface.removeIndex("documents", "userId_foreign_idx");
|
||||
await queryInterface.sequelize.query(
|
||||
'ALTER TABLE documents DROP CONSTRAINT "parentDocumentId_foreign_idx";'
|
||||
);
|
||||
await queryInterface.removeIndex(
|
||||
'documents',
|
||||
'parentDocumentId_foreign_idx'
|
||||
"documents",
|
||||
"parentDocumentId_foreign_idx"
|
||||
);
|
||||
await queryInterface.sequelize.query(
|
||||
'ALTER TABLE documents DROP CONSTRAINT "teamId_foreign_idx";'
|
||||
);
|
||||
await queryInterface.removeIndex('documents', 'teamId_foreign_idx');
|
||||
await queryInterface.removeIndex("documents", "teamId_foreign_idx");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'username', {
|
||||
await queryInterface.changeColumn("users", "username", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'username', {
|
||||
await queryInterface.changeColumn("users", "username", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('events', {
|
||||
await queryInterface.createTable("events", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -18,21 +18,21 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
collectionId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'collections',
|
||||
model: "collections",
|
||||
},
|
||||
},
|
||||
teamId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'teams',
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
createdAt: {
|
||||
@@ -45,8 +45,7 @@ module.exports = {
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('events');
|
||||
await queryInterface.dropTable("events");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'navigationTree');
|
||||
await queryInterface.removeColumn("collections", "navigationTree");
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'navigationTree', {
|
||||
await queryInterface.addColumn("collections", "navigationTree", {
|
||||
type: Sequelize.JSONB,
|
||||
allowNull: true,
|
||||
});
|
||||
|
||||
@@ -1,22 +1,21 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'html');
|
||||
await queryInterface.removeColumn('documents', 'preview');
|
||||
await queryInterface.removeColumn('revisions', 'html');
|
||||
await queryInterface.removeColumn('revisions', 'preview');
|
||||
await queryInterface.removeColumn("documents", "html");
|
||||
await queryInterface.removeColumn("documents", "preview");
|
||||
await queryInterface.removeColumn("revisions", "html");
|
||||
await queryInterface.removeColumn("revisions", "preview");
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'html', {
|
||||
await queryInterface.addColumn("documents", "html", {
|
||||
type: Sequelize.TEXT,
|
||||
});
|
||||
await queryInterface.addColumn('documents', 'preview', {
|
||||
await queryInterface.addColumn("documents", "preview", {
|
||||
type: Sequelize.TEXT,
|
||||
});
|
||||
await queryInterface.addColumn('revisions', 'html', {
|
||||
await queryInterface.addColumn("revisions", "html", {
|
||||
type: Sequelize.TEXT,
|
||||
});
|
||||
await queryInterface.addColumn('revisions', 'preview', {
|
||||
await queryInterface.addColumn("revisions", "preview", {
|
||||
type: Sequelize.TEXT,
|
||||
});
|
||||
},
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('users', 'avatarUrl', {
|
||||
await queryInterface.addColumn("users", "avatarUrl", {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('users', 'avatarUrl');
|
||||
await queryInterface.removeColumn("users", "avatarUrl");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'color', {
|
||||
await queryInterface.addColumn("collections", "color", {
|
||||
type: Sequelize.TEXT,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'color');
|
||||
await queryInterface.removeColumn("collections", "color");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('authentications', {
|
||||
await queryInterface.createTable("authentications", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -10,14 +10,14 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
teamId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'teams',
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
serviceId: {
|
||||
@@ -42,8 +42,7 @@ module.exports = {
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('authentications');
|
||||
await queryInterface.dropTable("authentications");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
const [teams, metaData] = await queryInterface.sequelize.query(`SELECT * FROM teams`);
|
||||
const teamIds = teams.map(team => team.id);
|
||||
await Promise.all(teamIds.map(async teamId => {
|
||||
await queryInterface.sequelize.query(`
|
||||
const [teams, metaData] = await queryInterface.sequelize.query(
|
||||
`SELECT * FROM teams`
|
||||
);
|
||||
|
||||
const teamIds = teams.map((team) => team.id);
|
||||
await Promise.all(
|
||||
teamIds.map(async (teamId) => {
|
||||
await queryInterface.sequelize.query(`
|
||||
update users
|
||||
set "isAdmin" = true
|
||||
where id in (
|
||||
@@ -14,9 +18,9 @@ module.exports = {
|
||||
limit 1
|
||||
);
|
||||
`);
|
||||
}));
|
||||
})
|
||||
);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
// no-op
|
||||
},
|
||||
|
||||
@@ -1,27 +1,35 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
|
||||
await queryInterface.addColumn('documents', 'publishedAt', {
|
||||
await queryInterface.addColumn("documents", "publishedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
});
|
||||
const [documents, metaData] = await queryInterface.sequelize.query(
|
||||
`SELECT * FROM documents`
|
||||
);
|
||||
|
||||
const [documents, metaData] = await queryInterface.sequelize.query(`SELECT * FROM documents`);
|
||||
for (const document of documents) {
|
||||
await queryInterface.sequelize.query(`
|
||||
update documents
|
||||
set "publishedAt" = '${new Date(document.createdAt).toISOString()}'
|
||||
where id = '${document.id}'
|
||||
`)
|
||||
`);
|
||||
}
|
||||
|
||||
await queryInterface.removeIndex('documents', ['id', 'atlasId']);
|
||||
await queryInterface.addIndex('documents', ['id', 'atlasId', 'publishedAt']);
|
||||
await queryInterface.removeIndex("documents", ["id", "atlasId"]);
|
||||
await queryInterface.addIndex("documents", [
|
||||
"id",
|
||||
"atlasId",
|
||||
"publishedAt",
|
||||
]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'publishedAt');
|
||||
await queryInterface.removeIndex('documents', ['id', 'atlasId', 'publishedAt']);
|
||||
await queryInterface.addIndex('documents', ['id', 'atlasId']);
|
||||
}
|
||||
await queryInterface.removeColumn("documents", "publishedAt");
|
||||
await queryInterface.removeIndex("documents", [
|
||||
"id",
|
||||
"atlasId",
|
||||
"publishedAt",
|
||||
]);
|
||||
await queryInterface.addIndex("documents", ["id", "atlasId"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('integrations', {
|
||||
await queryInterface.createTable("integrations", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -14,14 +14,14 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
teamId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'teams',
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
serviceId: {
|
||||
@@ -32,14 +32,14 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'collections',
|
||||
model: "collections",
|
||||
},
|
||||
},
|
||||
authenticationId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'authentications',
|
||||
model: "authentications",
|
||||
},
|
||||
},
|
||||
events: {
|
||||
@@ -60,8 +60,7 @@ module.exports = {
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('integrations');
|
||||
await queryInterface.dropTable("integrations");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'pinnedById', {
|
||||
await queryInterface.addColumn("documents", "pinnedById", {
|
||||
type: Sequelize.UUID,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'pinnedById');
|
||||
}
|
||||
await queryInterface.removeColumn("documents", "pinnedById");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,22 +1,19 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('users', 'suspendedById', {
|
||||
await queryInterface.addColumn("users", "suspendedById", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
});
|
||||
await queryInterface.addColumn('users', 'suspendedAt', {
|
||||
await queryInterface.addColumn("users", "suspendedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('users', 'suspendedById');
|
||||
await queryInterface.removeColumn('users', 'suspendedAt');
|
||||
}
|
||||
await queryInterface.removeColumn("users", "suspendedById");
|
||||
await queryInterface.removeColumn("users", "suspendedAt");
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -3,24 +3,31 @@ module.exports = {
|
||||
// upgrade to slate-md-serializer 3.0 means that newlines saved in Markdown are now
|
||||
// accurately reflected in the editor. To prevent a change in appearance in current docs
|
||||
// we need to collapse existing multiple newlines in the db.
|
||||
const [documents, metaData] = await queryInterface.sequelize.query(`SELECT * FROM documents`);
|
||||
const [documents, metaData] = await queryInterface.sequelize.query(
|
||||
`SELECT * FROM documents`
|
||||
);
|
||||
|
||||
for (const document of documents) {
|
||||
const id = document.id;
|
||||
const fixedText = document.text.replace(/\n{2,}/gi, "\n\n");
|
||||
if (fixedText === document.text) continue;
|
||||
|
||||
// raw query to avoid hooks
|
||||
await queryInterface.sequelize.query(`
|
||||
await queryInterface.sequelize.query(
|
||||
`
|
||||
update documents
|
||||
set "text" = :fixedText
|
||||
where id = :id
|
||||
`, { replacements: { fixedText, id } })
|
||||
`,
|
||||
{
|
||||
replacements: {
|
||||
fixedText,
|
||||
id,
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
// cannot be reversed
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('shares', {
|
||||
await queryInterface.createTable("shares", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -10,21 +10,21 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
teamId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'teams',
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
documentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'documents',
|
||||
model: "documents",
|
||||
},
|
||||
},
|
||||
createdAt: {
|
||||
@@ -37,8 +37,7 @@ module.exports = {
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('shares');
|
||||
await queryInterface.dropTable("shares");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('teams', 'googleId', {
|
||||
await queryInterface.addColumn("teams", "googleId", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
unique: true
|
||||
unique: true,
|
||||
});
|
||||
await queryInterface.addColumn('teams', 'avatarUrl', {
|
||||
await queryInterface.addColumn("teams", "avatarUrl", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('users', 'service', {
|
||||
await queryInterface.addColumn("users", "service", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
defaultValue: 'slack'
|
||||
defaultValue: "slack",
|
||||
});
|
||||
await queryInterface.renameColumn('users', 'slackId', 'serviceId');
|
||||
await queryInterface.addIndex('teams', ['googleId']);
|
||||
await queryInterface.renameColumn("users", "slackId", "serviceId");
|
||||
await queryInterface.addIndex("teams", ["googleId"]);
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('teams', 'googleId');
|
||||
await queryInterface.removeColumn('teams', 'avatarUrl');
|
||||
await queryInterface.removeColumn('users', 'service');
|
||||
await queryInterface.renameColumn('users', 'serviceId', 'slackId');
|
||||
await queryInterface.removeIndex('teams', ['googleId']);
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("teams", "googleId");
|
||||
await queryInterface.removeColumn("teams", "avatarUrl");
|
||||
await queryInterface.removeColumn("users", "service");
|
||||
await queryInterface.renameColumn("users", "serviceId", "slackId");
|
||||
await queryInterface.removeIndex("teams", ["googleId"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.renameColumn('authentications', 'serviceId', 'service');
|
||||
await queryInterface.renameColumn('integrations', 'serviceId', 'service');
|
||||
await queryInterface.renameColumn(
|
||||
"authentications",
|
||||
"serviceId",
|
||||
"service"
|
||||
);
|
||||
await queryInterface.renameColumn("integrations", "serviceId", "service");
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.renameColumn('authentications', 'service', 'serviceId');
|
||||
await queryInterface.renameColumn('integrations', 'service', 'serviceId');
|
||||
}
|
||||
}
|
||||
await queryInterface.renameColumn(
|
||||
"authentications",
|
||||
"service",
|
||||
"serviceId"
|
||||
);
|
||||
await queryInterface.renameColumn("integrations", "service", "serviceId");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('users', 'lastActiveAt', {
|
||||
await queryInterface.addColumn("users", "lastActiveAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('users', 'lastActiveIp', {
|
||||
await queryInterface.addColumn("users", "lastActiveIp", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('users', 'lastSignedInAt', {
|
||||
await queryInterface.addColumn("users", "lastSignedInAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('users', 'lastSignedInIp', {
|
||||
await queryInterface.addColumn("users", "lastSignedInIp", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('users', 'lastActiveAt');
|
||||
await queryInterface.removeColumn('users', 'lastActiveIp');
|
||||
await queryInterface.removeColumn('users', 'lastSignedInAt');
|
||||
await queryInterface.removeColumn('users', 'lastSignedInIp');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("users", "lastActiveAt");
|
||||
await queryInterface.removeColumn("users", "lastActiveIp");
|
||||
await queryInterface.removeColumn("users", "lastSignedInAt");
|
||||
await queryInterface.removeColumn("users", "lastSignedInIp");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('shares', 'revokedAt', {
|
||||
await queryInterface.addColumn("shares", "revokedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('shares', 'revokedById', {
|
||||
await queryInterface.addColumn("shares", "revokedById", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('shares', 'revokedAt');
|
||||
await queryInterface.removeColumn('shares', 'revokedById');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("shares", "revokedAt");
|
||||
await queryInterface.removeColumn("shares", "revokedById");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('users', 'deletedAt', {
|
||||
await queryInterface.addColumn("users", "deletedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('teams', 'deletedAt', {
|
||||
await queryInterface.addColumn("teams", "deletedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('users', 'deletedAt');
|
||||
await queryInterface.removeColumn('teams', 'deletedAt');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("users", "deletedAt");
|
||||
await queryInterface.removeColumn("teams", "deletedAt");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('users', 'passwordDigest');
|
||||
await queryInterface.removeColumn("users", "passwordDigest");
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('users', 'passwordDigest', {
|
||||
await queryInterface.addColumn("users", "passwordDigest", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'serviceId', {
|
||||
await queryInterface.changeColumn("users", "serviceId", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('users', 'serviceId', {
|
||||
await queryInterface.changeColumn("users", "serviceId", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.renameColumn('documents', 'atlasId', 'collectionId');
|
||||
await queryInterface.removeColumn('documents', 'private');
|
||||
await queryInterface.addColumn('events', 'documentId', {
|
||||
await queryInterface.renameColumn("documents", "atlasId", "collectionId");
|
||||
await queryInterface.removeColumn("documents", "private");
|
||||
await queryInterface.addColumn("events", "documentId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.renameColumn('documents', 'collectionId', 'atlasId');
|
||||
await queryInterface.removeColumn('events', 'documentId');
|
||||
await queryInterface.addColumn('documents', 'private', {
|
||||
await queryInterface.renameColumn("documents", "collectionId", "atlasId");
|
||||
await queryInterface.removeColumn("events", "documentId");
|
||||
await queryInterface.addColumn("documents", "private", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('teams', 'sharing', {
|
||||
await queryInterface.addColumn("teams", "sharing", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: true
|
||||
defaultValue: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('teams', 'sharing');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("teams", "sharing");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('teams', 'subdomain', {
|
||||
await queryInterface.addColumn("teams", "subdomain", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
unique: true
|
||||
unique: true,
|
||||
});
|
||||
await queryInterface.addIndex('teams', ['subdomain']);
|
||||
await queryInterface.addIndex("teams", ["subdomain"]);
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('teams', 'subdomain');
|
||||
await queryInterface.removeIndex('teams', ['subdomain']);
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("teams", "subdomain");
|
||||
await queryInterface.removeIndex("teams", ["subdomain"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('notifications', {
|
||||
await queryInterface.createTable("notifications", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -10,28 +10,28 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
userId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
event: {
|
||||
type: Sequelize.STRING
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
email: {
|
||||
type: Sequelize.BOOLEAN
|
||||
type: Sequelize.BOOLEAN,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
}
|
||||
},
|
||||
});
|
||||
await queryInterface.createTable('notification_settings', {
|
||||
await queryInterface.createTable("notification_settings", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -41,34 +41,37 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
teamId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'teams',
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
event: {
|
||||
type: Sequelize.STRING
|
||||
type: Sequelize.STRING,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.addIndex('notification_settings', ['teamId', 'userId']);
|
||||
await queryInterface.addIndex('notification_settings', ['event']);
|
||||
await queryInterface.addIndex("notification_settings", [
|
||||
"teamId",
|
||||
"userId",
|
||||
]);
|
||||
await queryInterface.addIndex("notification_settings", ["event"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('notifications');
|
||||
await queryInterface.dropTable('notification_settings');
|
||||
|
||||
await queryInterface.removeIndex('notification_settings', ['teamId', 'userId']);
|
||||
await queryInterface.removeIndex('notification_settings', ['event']);
|
||||
await queryInterface.dropTable("notifications");
|
||||
await queryInterface.dropTable("notification_settings");
|
||||
await queryInterface.removeIndex("notification_settings", [
|
||||
"teamId",
|
||||
"userId",
|
||||
]);
|
||||
await queryInterface.removeIndex("notification_settings", ["event"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('teams', 'documentEmbeds', {
|
||||
await queryInterface.addColumn("teams", "documentEmbeds", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: true
|
||||
defaultValue: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('teams', 'documentEmbeds');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("teams", "documentEmbeds");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('collection_users', {
|
||||
await queryInterface.createTable("collection_users", {
|
||||
collectionId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'collections',
|
||||
model: "collections",
|
||||
},
|
||||
},
|
||||
userId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
permission: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
createdById: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
createdAt: {
|
||||
@@ -33,21 +33,24 @@ module.exports = {
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
}
|
||||
},
|
||||
});
|
||||
await queryInterface.addColumn('collections', 'private', {
|
||||
await queryInterface.addColumn("collections", "private", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
defaultValue: false,
|
||||
});
|
||||
|
||||
await queryInterface.addIndex('collection_users', ['collectionId', 'userId']);
|
||||
await queryInterface.addIndex("collection_users", [
|
||||
"collectionId",
|
||||
"userId",
|
||||
]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('collection_users');
|
||||
await queryInterface.removeColumn('collections', 'private');
|
||||
|
||||
await queryInterface.removeIndex('collection_users', ['collectionId', 'userId']);
|
||||
await queryInterface.dropTable("collection_users");
|
||||
await queryInterface.removeColumn("collections", "private");
|
||||
await queryInterface.removeIndex("collection_users", [
|
||||
"collectionId",
|
||||
"userId",
|
||||
]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'archivedAt', {
|
||||
await queryInterface.addColumn("documents", "archivedAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'archivedAt');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("documents", "archivedAt");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex('documents', ['updatedAt']);
|
||||
await queryInterface.addIndex('documents', ['archivedAt']);
|
||||
await queryInterface.addIndex('documents', ['collaboratorIds']);
|
||||
await queryInterface.addIndex("documents", ["updatedAt"]);
|
||||
await queryInterface.addIndex("documents", ["archivedAt"]);
|
||||
await queryInterface.addIndex("documents", ["collaboratorIds"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex('documents', ['updatedAt']);
|
||||
await queryInterface.removeIndex('documents', ['archivedAt']);
|
||||
await queryInterface.removeIndex('documents', ['collaboratorIds']);
|
||||
await queryInterface.removeIndex("documents", ["updatedAt"]);
|
||||
await queryInterface.removeIndex("documents", ["archivedAt"]);
|
||||
await queryInterface.removeIndex("documents", ["collaboratorIds"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,35 +1,34 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn('events', 'data', {
|
||||
await queryInterface.changeColumn("events", "data", {
|
||||
type: Sequelize.JSONB,
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('events', 'actorId', {
|
||||
await queryInterface.addColumn("events", "actorId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
});
|
||||
await queryInterface.addColumn('events', 'modelId', {
|
||||
await queryInterface.addColumn("events", "modelId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('events', 'ip', {
|
||||
await queryInterface.addColumn("events", "ip", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addIndex('events', ['name']);
|
||||
await queryInterface.addIndex('events', ['actorId']);
|
||||
await queryInterface.addIndex('events', ['teamId', 'collectionId']);
|
||||
await queryInterface.addIndex("events", ["name"]);
|
||||
await queryInterface.addIndex("events", ["actorId"]);
|
||||
await queryInterface.addIndex("events", ["teamId", "collectionId"]);
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('events', 'actorId');
|
||||
await queryInterface.removeColumn('events', 'modelId');
|
||||
await queryInterface.removeColumn('events', 'ip');
|
||||
|
||||
await queryInterface.removeIndex('events', ['name']);
|
||||
await queryInterface.removeIndex('events', ['actorId']);
|
||||
await queryInterface.removeIndex('events', ['teamId', 'collectionId']);
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("events", "actorId");
|
||||
await queryInterface.removeColumn("events", "modelId");
|
||||
await queryInterface.removeColumn("events", "ip");
|
||||
await queryInterface.removeIndex("events", ["name"]);
|
||||
await queryInterface.removeIndex("events", ["actorId"]);
|
||||
await queryInterface.removeIndex("events", ["teamId", "collectionId"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'isWelcome', {
|
||||
await queryInterface.addColumn("documents", "isWelcome", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
defaultValue: false,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'isWelcome');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("documents", "isWelcome");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('backlinks', {
|
||||
await queryInterface.createTable("backlinks", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -10,21 +10,21 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
documentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'documents',
|
||||
model: "documents",
|
||||
},
|
||||
},
|
||||
reverseDocumentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'documents',
|
||||
model: "documents",
|
||||
},
|
||||
},
|
||||
createdAt: {
|
||||
@@ -36,11 +36,10 @@ module.exports = {
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
await queryInterface.addIndex('backlinks', ['documentId']);
|
||||
await queryInterface.addIndex("backlinks", ["documentId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('backlinks');
|
||||
await queryInterface.removeIndex('backlinks', ['documentId']);
|
||||
await queryInterface.dropTable("backlinks");
|
||||
await queryInterface.removeIndex("backlinks", ["documentId"]);
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,25 +1,31 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'maintainerApprovalRequired', {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false,
|
||||
});
|
||||
await queryInterface.changeColumn('collection_users', 'permission', {
|
||||
await queryInterface.addColumn(
|
||||
"collections",
|
||||
"maintainerApprovalRequired",
|
||||
{
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false,
|
||||
}
|
||||
);
|
||||
await queryInterface.changeColumn("collection_users", "permission", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
defaultValue: 'read_write',
|
||||
defaultValue: "read_write",
|
||||
});
|
||||
await queryInterface.addIndex('collection_users', ['permission']);
|
||||
|
||||
await queryInterface.addIndex("collection_users", ["permission"]);
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'maintainerApprovalRequired');
|
||||
await queryInterface.changeColumn('collection_users', 'permission', {
|
||||
await queryInterface.removeColumn(
|
||||
"collections",
|
||||
"maintainerApprovalRequired"
|
||||
);
|
||||
await queryInterface.changeColumn("collection_users", "permission", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
defaultValue: null,
|
||||
});
|
||||
await queryInterface.removeIndex('collection_users', ['permission']);
|
||||
await queryInterface.removeIndex("collection_users", ["permission"]);
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,43 +1,45 @@
|
||||
const tableName = 'revisions';
|
||||
|
||||
const tableName = "revisions";
|
||||
// because of this issue in Sequelize the foreign key constraint may be named differently depending
|
||||
// on when the previous migrations were ran https://github.com/sequelize/sequelize/pull/9890
|
||||
const constraintNames = ['revisions_documentId_fkey', 'documentId_foreign_idx'];
|
||||
|
||||
const constraintNames = ["revisions_documentId_fkey", "documentId_foreign_idx"];
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,43 +1,48 @@
|
||||
const tableName = 'backlinks';
|
||||
|
||||
const tableName = "backlinks";
|
||||
// because of this issue in Sequelize the foreign key constraint may be named differently depending
|
||||
// on when the previous migrations were ran https://github.com/sequelize/sequelize/pull/9890
|
||||
const constraintNames = ['backlinks_reverseDocumentId_fkey', 'reverseDocumentId_foreign_idx'];
|
||||
|
||||
const constraintNames = [
|
||||
"backlinks_reverseDocumentId_fkey",
|
||||
"reverseDocumentId_foreign_idx",
|
||||
];
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("reverseDocumentId") references "documents" ("id")
|
||||
on delete cascade`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("reverseDocumentId") references "documents" ("id")
|
||||
on delete cascade`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("reverseDocumentId") references "documents" ("id")
|
||||
on delete no action`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("reverseDocumentId") references "documents" ("id")
|
||||
on delete no action`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,43 +1,48 @@
|
||||
const tableName = 'documents';
|
||||
|
||||
const tableName = "documents";
|
||||
// because of this issue in Sequelize the foreign key constraint may be named differently depending
|
||||
// on when the previous migrations were ran https://github.com/sequelize/sequelize/pull/9890
|
||||
const constraintNames = ['documents_parentDocumentId_fkey', 'parentDocumentId_foreign_idx'];
|
||||
|
||||
const constraintNames = [
|
||||
"documents_parentDocumentId_fkey",
|
||||
"parentDocumentId_foreign_idx",
|
||||
];
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("parentDocumentId") references "documents" ("id")
|
||||
on delete cascade`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("parentDocumentId") references "documents" ("id")
|
||||
on delete cascade`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("parentDocumentId") references "documents" ("id")
|
||||
on delete no action`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("parentDocumentId") references "documents" ("id")
|
||||
on delete no action`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,43 +1,45 @@
|
||||
const tableName = 'shares';
|
||||
|
||||
const tableName = "shares";
|
||||
// because of this issue in Sequelize the foreign key constraint may be named differently depending
|
||||
// on when the previous migrations were ran https://github.com/sequelize/sequelize/pull/9890
|
||||
const constraintNames = ['shares_documentId_fkey', 'documentId_foreign_idx'];
|
||||
|
||||
const constraintNames = ["shares_documentId_fkey", "documentId_foreign_idx"];
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,43 +1,45 @@
|
||||
const tableName = 'backlinks';
|
||||
|
||||
const tableName = "backlinks";
|
||||
// because of this issue in Sequelize the foreign key constraint may be named differently depending
|
||||
// on when the previous migrations were ran https://github.com/sequelize/sequelize/pull/9890
|
||||
const constraintNames = ['backlinks_documentId_fkey', 'documentId_foreign_idx'];
|
||||
|
||||
const constraintNames = ["backlinks_documentId_fkey", "documentId_foreign_idx"];
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('teams', 'guestSignin', {
|
||||
await queryInterface.addColumn("teams", "guestSignin", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false,
|
||||
});
|
||||
await queryInterface.addColumn('users', 'lastSigninEmailSentAt', {
|
||||
type: Sequelize.DATE
|
||||
await queryInterface.addColumn("users", "lastSigninEmailSentAt", {
|
||||
type: Sequelize.DATE,
|
||||
});
|
||||
await queryInterface.changeColumn('users', 'email', {
|
||||
await queryInterface.changeColumn("users", "email", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
defaultValue: null,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('teams', 'guestSignin');
|
||||
await queryInterface.removeColumn('users', 'lastSigninEmailSentAt');
|
||||
await queryInterface.changeColumn('users', 'email', {
|
||||
await queryInterface.removeColumn("teams", "guestSignin");
|
||||
await queryInterface.removeColumn("users", "lastSigninEmailSentAt");
|
||||
await queryInterface.changeColumn("users", "email", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
});
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -6,45 +6,43 @@ module.exports = {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
primaryKey: true
|
||||
primaryKey: true,
|
||||
},
|
||||
name: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
teamId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "teams"
|
||||
}
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
createdById: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "users"
|
||||
}
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
deletedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
}
|
||||
allowNull: true,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.addIndex("groups", ["teamId"]);
|
||||
await queryInterface.addIndex("groups", ["deletedAt"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
return queryInterface.dropTable("groups");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -7,43 +7,41 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "users"
|
||||
}
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
groupId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "groups"
|
||||
}
|
||||
model: "groups",
|
||||
},
|
||||
},
|
||||
createdById: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "users"
|
||||
}
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
deletedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
}
|
||||
allowNull: true,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.addIndex("group_users", ["groupId", "userId"]);
|
||||
await queryInterface.addIndex("group_users", ["userId"]);
|
||||
await queryInterface.addIndex("group_users", ["deletedAt"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
return queryInterface.dropTable("group_users");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('views', 'lastEditingAt', {
|
||||
await queryInterface.addColumn("views", "lastEditingAt", {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('views', 'lastEditingAt');
|
||||
}
|
||||
await queryInterface.removeColumn("views", "lastEditingAt");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('attachments', {
|
||||
await queryInterface.createTable("attachments", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
@@ -10,21 +10,21 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'teams',
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
userId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'users',
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
documentId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: 'documents',
|
||||
model: "documents",
|
||||
},
|
||||
},
|
||||
key: {
|
||||
@@ -56,10 +56,9 @@ module.exports = {
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
await queryInterface.addIndex('attachments', ['documentId']);
|
||||
await queryInterface.addIndex("attachments", ["documentId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('attachments');
|
||||
await queryInterface.dropTable("attachments");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
@@ -7,47 +7,48 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "collections"
|
||||
}
|
||||
model: "collections",
|
||||
},
|
||||
},
|
||||
groupId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "groups"
|
||||
}
|
||||
model: "groups",
|
||||
},
|
||||
},
|
||||
createdById: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "users"
|
||||
}
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
permission: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
updatedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false
|
||||
allowNull: false,
|
||||
},
|
||||
deletedAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: true
|
||||
}
|
||||
allowNull: true,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.addIndex("collection_groups", ["collectionId", "groupId"]);
|
||||
await queryInterface.addIndex("collection_groups", [
|
||||
"collectionId",
|
||||
"groupId",
|
||||
]);
|
||||
await queryInterface.addIndex("collection_groups", ["groupId"]);
|
||||
await queryInterface.addIndex("collection_groups", ["deletedAt"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
return queryInterface.dropTable("collection_groups");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'editorVersion', {
|
||||
await queryInterface.addColumn("documents", "editorVersion", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('revisions', 'editorVersion', {
|
||||
await queryInterface.addColumn("revisions", "editorVersion", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'editorVersion');
|
||||
await queryInterface.removeColumn('revisions', 'editorVersion');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("documents", "editorVersion");
|
||||
await queryInterface.removeColumn("revisions", "editorVersion");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,43 +1,48 @@
|
||||
const tableName = 'attachments';
|
||||
|
||||
const tableName = "attachments";
|
||||
// because of this issue in Sequelize the foreign key constraint may be named differently depending
|
||||
// on when the previous migrations were ran https://github.com/sequelize/sequelize/pull/9890
|
||||
const constraintNames = ['attachments_documentId_fkey', 'attachments_foreign_idx'];
|
||||
|
||||
const constraintNames = [
|
||||
"attachments_documentId_fkey",
|
||||
"attachments_foreign_idx",
|
||||
];
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"\
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete no action`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'version', {
|
||||
await queryInterface.addColumn("documents", "version", {
|
||||
type: Sequelize.SMALLINT,
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('revisions', 'version', {
|
||||
await queryInterface.addColumn("revisions", "version", {
|
||||
type: Sequelize.SMALLINT,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'version');
|
||||
await queryInterface.removeColumn('revisions', 'version');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("documents", "version");
|
||||
await queryInterface.removeColumn("revisions", "version");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'backup', {
|
||||
await queryInterface.addColumn("documents", "backup", {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('revisions', 'backup', {
|
||||
await queryInterface.addColumn("revisions", "backup", {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'backup');
|
||||
await queryInterface.removeColumn('revisions', 'backup');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("documents", "backup");
|
||||
await queryInterface.removeColumn("revisions", "backup");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'icon', {
|
||||
await queryInterface.addColumn("collections", "icon", {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'icon');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("collections", "icon");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('shares', 'published', {
|
||||
await queryInterface.addColumn("shares", "published", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
defaultValue: false,
|
||||
});
|
||||
|
||||
await queryInterface.sequelize.query(`
|
||||
update shares
|
||||
set "published" = true
|
||||
`);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('shares', 'published');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("shares", "published");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'template', {
|
||||
await queryInterface.addColumn("documents", "template", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
defaultValue: false,
|
||||
});
|
||||
await queryInterface.addColumn('documents', 'templateId', {
|
||||
await queryInterface.addColumn("documents", "templateId", {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'templateId');
|
||||
await queryInterface.removeColumn('documents', 'template');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("documents", "templateId");
|
||||
await queryInterface.removeColumn("documents", "template");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'type');
|
||||
await queryInterface.removeColumn("collections", "type");
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'type', {
|
||||
await queryInterface.addColumn("collections", "type", {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: "atlas"
|
||||
defaultValue: "atlas",
|
||||
});
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable("search_queries", {
|
||||
|
||||
@@ -1,19 +1,16 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex("search_queries", ["teamId"]);
|
||||
await queryInterface.addIndex("search_queries", ["userId"]);
|
||||
await queryInterface.addIndex("search_queries", ["createdAt"]);
|
||||
|
||||
await queryInterface.addIndex("users", ["teamId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex("search_queries", ["teamId"]);
|
||||
await queryInterface.removeIndex("search_queries", ["userId"]);
|
||||
await queryInterface.removeIndex("search_queries", ["createdAt"]);
|
||||
|
||||
await queryInterface.removeIndex("users", ["teamId"]);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex("backlinks", ["reverseDocumentId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex("backlinks", ["reverseDocumentId"]);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('teams', 'domain', {
|
||||
await queryInterface.addColumn("teams", "domain", {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: true,
|
||||
unique: true
|
||||
unique: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('teams', 'domain');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("teams", "domain");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('users', 'language', {
|
||||
await queryInterface.addColumn("users", "language", {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: process.env.DEFAULT_LANGUAGE,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('users', 'language');
|
||||
}
|
||||
await queryInterface.removeColumn("users", "language");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,29 +1,24 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn(
|
||||
"attachments",
|
||||
"key",
|
||||
{ type: Sequelize.STRING(4096), allowNull: false, }
|
||||
);
|
||||
await queryInterface.changeColumn(
|
||||
"attachments",
|
||||
"url",
|
||||
{ type: Sequelize.STRING(4096), allowNull: false, }
|
||||
);
|
||||
await queryInterface.changeColumn("attachments", "key", {
|
||||
type: Sequelize.STRING(4096),
|
||||
allowNull: false,
|
||||
});
|
||||
await queryInterface.changeColumn("attachments", "url", {
|
||||
type: Sequelize.STRING(4096),
|
||||
allowNull: false,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.changeColumn(
|
||||
"attachments",
|
||||
"key",
|
||||
{ type: Sequelize.STRING(255), allowNull: false, }
|
||||
);
|
||||
await queryInterface.changeColumn(
|
||||
"attachments",
|
||||
"url",
|
||||
{ type: Sequelize.STRING(255), allowNull: false, }
|
||||
);
|
||||
}
|
||||
await queryInterface.changeColumn("attachments", "key", {
|
||||
type: Sequelize.STRING(255),
|
||||
allowNull: false,
|
||||
});
|
||||
await queryInterface.changeColumn("attachments", "url", {
|
||||
type: Sequelize.STRING(255),
|
||||
allowNull: false,
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,37 +1,42 @@
|
||||
const tableName = 'attachments';
|
||||
|
||||
const tableName = "attachments";
|
||||
// because of this issue in Sequelize the foreign key constraint may be named differently depending
|
||||
// on when the previous migrations were ran https://github.com/sequelize/sequelize/pull/9890
|
||||
const constraintNames = ['attachments_documentId_fkey', 'attachments_foreign_idx'];
|
||||
|
||||
const constraintNames = [
|
||||
"attachments_documentId_fkey",
|
||||
"attachments_foreign_idx",
|
||||
];
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
throw error;
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(
|
||||
`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`
|
||||
`alter table "${tableName}" drop constraint "${constraintName}"`
|
||||
);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
let error;
|
||||
|
||||
for (const constraintName of constraintNames) {
|
||||
try {
|
||||
await queryInterface.sequelize.query(`alter table "${tableName}"
|
||||
add constraint "${constraintName}" foreign key("documentId") references "documents" ("id")
|
||||
on delete cascade`);
|
||||
return;
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
}
|
||||
|
||||
throw error;
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'sort', {
|
||||
await queryInterface.addColumn("collections", "sort", {
|
||||
type: Sequelize.JSONB,
|
||||
allowNull: true
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'sort');
|
||||
}
|
||||
};
|
||||
await queryInterface.removeColumn("collections", "sort");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -8,7 +8,6 @@ module.exports = {
|
||||
"createdById"
|
||||
);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
return queryInterface.renameColumn(
|
||||
"collections",
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'sharing', {
|
||||
await queryInterface.addColumn("collections", "sharing", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: true
|
||||
defaultValue: true,
|
||||
});
|
||||
},
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'sharing');
|
||||
}
|
||||
}
|
||||
await queryInterface.removeColumn("collections", "sharing");
|
||||
},
|
||||
};
|
||||
|
||||
@@ -7,7 +7,6 @@ module.exports = {
|
||||
defaultValue: null,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("collections", "index");
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
@@ -20,21 +20,20 @@ module.exports = {
|
||||
enabled: {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: true
|
||||
defaultValue: true,
|
||||
},
|
||||
teamId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "teams"
|
||||
}
|
||||
model: "teams",
|
||||
},
|
||||
},
|
||||
createdAt: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.createTable("user_authentications", {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
@@ -45,15 +44,15 @@ module.exports = {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "users"
|
||||
}
|
||||
model: "users",
|
||||
},
|
||||
},
|
||||
authenticationProviderId: {
|
||||
type: Sequelize.UUID,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: "authentication_providers"
|
||||
}
|
||||
model: "authentication_providers",
|
||||
},
|
||||
},
|
||||
accessToken: {
|
||||
type: Sequelize.BLOB,
|
||||
@@ -81,18 +80,16 @@ module.exports = {
|
||||
allowNull: false,
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.removeColumn("users", "slackAccessToken")
|
||||
await queryInterface.removeColumn("users", "slackAccessToken");
|
||||
await queryInterface.addIndex("authentication_providers", ["providerId"]);
|
||||
await queryInterface.addIndex("user_authentications", ["providerId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable("user_authentications");
|
||||
await queryInterface.dropTable("authentication_providers");
|
||||
await queryInterface.addColumn("users", "slackAccessToken", {
|
||||
type: 'bytea',
|
||||
type: "bytea",
|
||||
allowNull: true,
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("users", "slackData");
|
||||
await queryInterface.removeColumn("teams", "slackData");
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn("teams", "slackData", {
|
||||
type: 'JSONB',
|
||||
type: "JSONB",
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn("users", "slackData", {
|
||||
type: 'JSONB',
|
||||
type: "JSONB",
|
||||
allowNull: true,
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn("users", "isViewer", {
|
||||
await queryInterface.addColumn("users", "isViewer", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
defaultValue: false,
|
||||
allowNull: false,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("users", "isViewer");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
@@ -10,29 +10,24 @@ module.exports = {
|
||||
isIn: [["read", "read_write"]],
|
||||
},
|
||||
});
|
||||
|
||||
await queryInterface.sequelize.query(`
|
||||
UPDATE collections
|
||||
SET "permission" = 'read_write'
|
||||
WHERE "private" = false
|
||||
`);
|
||||
|
||||
await queryInterface.removeColumn("collections", "private");
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn("collections", "private", {
|
||||
type: Sequelize.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
defaultValue: false,
|
||||
});
|
||||
|
||||
await queryInterface.sequelize.query(`
|
||||
UPDATE collections
|
||||
SET "private" = true
|
||||
WHERE "permission" IS NULL
|
||||
`);
|
||||
|
||||
await queryInterface.removeColumn("collections", "permission");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
@@ -7,8 +7,7 @@ module.exports = {
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("shares", "lastAccessedAt");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
@@ -8,8 +8,7 @@ module.exports = {
|
||||
defaultValue: false,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("shares", "includeChildDocuments");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn("teams", "signupQueryParams", {
|
||||
await queryInterface.addColumn("teams", "signupQueryParams", {
|
||||
type: Sequelize.JSONB,
|
||||
allowNull: true,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("teams", "signupQueryParams");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn("documents","previousTitles",{
|
||||
type: Sequelize.ARRAY(Sequelize.STRING)
|
||||
})
|
||||
await queryInterface.addColumn("documents", "previousTitles", {
|
||||
type: Sequelize.ARRAY(Sequelize.STRING),
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("documents", "previousTitles");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
@@ -15,7 +15,6 @@ module.exports = {
|
||||
`;
|
||||
await queryInterface.sequelize.query(searchDocument);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
const searchDocument = `
|
||||
CREATE OR REPLACE FUNCTION documents_search_trigger() RETURNS trigger AS $$
|
||||
@@ -28,6 +27,5 @@ module.exports = {
|
||||
$$ LANGUAGE plpgsql;
|
||||
`;
|
||||
await queryInterface.sequelize.query(searchDocument);
|
||||
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex("events", ["documentId"]);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeIndex("events", ["documentId"]);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -7,9 +7,11 @@ module.exports = {
|
||||
await queryInterface.removeIndex("users", "users_slack_id");
|
||||
await queryInterface.removeIndex("teams", "teams_slack_id");
|
||||
await queryInterface.removeIndex("teams", "teams_google_id");
|
||||
await queryInterface.removeIndex("collection_users", "collection_users_permission");
|
||||
await queryInterface.removeIndex(
|
||||
"collection_users",
|
||||
"collection_users_permission"
|
||||
);
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addIndex("documents", ["collaboratorIds"]);
|
||||
await queryInterface.addIndex("documents", ["id", "deletedAt"]);
|
||||
@@ -17,5 +19,5 @@ module.exports = {
|
||||
await queryInterface.addIndex("teams", ["slackId"]);
|
||||
await queryInterface.addIndex("teams", ["googleId"]);
|
||||
await queryInterface.addIndex("collection_users", ["permission"]);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('documents', 'backup');
|
||||
await queryInterface.removeColumn('revisions', 'backup');
|
||||
await queryInterface.removeColumn("documents", "backup");
|
||||
await queryInterface.removeColumn("revisions", "backup");
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('documents', 'backup', {
|
||||
await queryInterface.addColumn("documents", "backup", {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
});
|
||||
await queryInterface.addColumn('revisions', 'backup', {
|
||||
await queryInterface.addColumn("revisions", "backup", {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
});
|
||||
}
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -9,7 +9,6 @@ module.exports = {
|
||||
type: Sequelize.BOOLEAN,
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn("documents", "state");
|
||||
await queryInterface.removeColumn("teams", "collaborativeEditing");
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user