chore: Remove all usage of collection.type (#1445)
* chore: Remove all usage of collection.type * migration: Remove type column
This commit is contained in:
@@ -16,7 +16,6 @@ export default class Collection extends BaseModel {
|
||||
icon: string;
|
||||
color: string;
|
||||
private: boolean;
|
||||
type: "atlas" | "journal";
|
||||
documents: NavigationNode[];
|
||||
createdAt: ?string;
|
||||
updatedAt: ?string;
|
||||
|
||||
@@ -30,7 +30,7 @@ const { authorize } = policy;
|
||||
const router = new Router();
|
||||
|
||||
router.post("collections.create", auth(), async (ctx) => {
|
||||
const { name, color, description, icon, type } = ctx.body;
|
||||
const { name, color, description, icon } = ctx.body;
|
||||
const isPrivate = ctx.body.private;
|
||||
ctx.assertPresent(name, "name is required");
|
||||
|
||||
@@ -46,7 +46,6 @@ router.post("collections.create", auth(), async (ctx) => {
|
||||
description,
|
||||
icon,
|
||||
color,
|
||||
type: type || "atlas",
|
||||
teamId: user.teamId,
|
||||
creatorId: user.id,
|
||||
private: isPrivate,
|
||||
|
||||
@@ -1062,7 +1062,6 @@ describe("#collections.delete", () => {
|
||||
urlId: "blah",
|
||||
teamId: user.teamId,
|
||||
creatorId: user.id,
|
||||
type: "atlas",
|
||||
});
|
||||
|
||||
const res = await server.post("/api/collections.delete", {
|
||||
|
||||
@@ -718,7 +718,7 @@ router.post("documents.create", auth(), async (ctx) => {
|
||||
authorize(user, "publish", collection);
|
||||
|
||||
let parentDocument;
|
||||
if (parentDocumentId && collection.type === "atlas") {
|
||||
if (parentDocumentId) {
|
||||
parentDocument = await Document.findOne({
|
||||
where: {
|
||||
id: parentDocumentId,
|
||||
@@ -938,13 +938,6 @@ router.post("documents.move", auth(), async (ctx) => {
|
||||
const document = await Document.findByPk(id, { userId: user.id });
|
||||
authorize(user, "move", document);
|
||||
|
||||
const { collection } = document;
|
||||
if (collection.type !== "atlas" && parentDocumentId) {
|
||||
throw new InvalidRequestError(
|
||||
"Document cannot be nested in this collection type"
|
||||
);
|
||||
}
|
||||
|
||||
if (parentDocumentId) {
|
||||
const parent = await Document.findByPk(parentDocumentId, {
|
||||
userId: user.id,
|
||||
|
||||
14
server/migrations/20200812170227-remove-collection-type.js
Normal file
14
server/migrations/20200812170227-remove-collection-type.js
Normal file
@@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.removeColumn('collections', 'type');
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.addColumn('collections', 'type', {
|
||||
type: Sequelize.STRING,
|
||||
defaultValue: "atlas"
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -23,12 +23,6 @@ const Collection = sequelize.define(
|
||||
color: DataTypes.STRING,
|
||||
private: DataTypes.BOOLEAN,
|
||||
maintainerApprovalRequired: DataTypes.BOOLEAN,
|
||||
type: {
|
||||
type: DataTypes.STRING,
|
||||
validate: { isIn: [["atlas", "journal"]] },
|
||||
},
|
||||
|
||||
/* type: atlas */
|
||||
documentStructure: DataTypes.JSONB,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -441,7 +441,7 @@ Document.addHook("beforeSave", async (model) => {
|
||||
}
|
||||
|
||||
const collection = await Collection.findByPk(model.collectionId);
|
||||
if (!collection || collection.type !== "atlas") {
|
||||
if (!collection) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ Document.addHook("afterCreate", async (model) => {
|
||||
}
|
||||
|
||||
const collection = await Collection.findByPk(model.collectionId);
|
||||
if (!collection || collection.type !== "atlas") {
|
||||
if (!collection) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -548,8 +548,6 @@ Document.prototype.publish = async function (options) {
|
||||
if (this.publishedAt) return this.save(options);
|
||||
|
||||
const collection = await Collection.findByPk(this.collectionId);
|
||||
if (collection.type !== "atlas") return this.save(options);
|
||||
|
||||
await collection.addDocumentToStructure(this);
|
||||
|
||||
this.publishedAt = new Date();
|
||||
|
||||
@@ -134,7 +134,6 @@ Team.prototype.provisionFirstCollection = async function (userId) {
|
||||
name: "Welcome",
|
||||
description:
|
||||
"This collection is a quick guide to what Outline is all about. Feel free to delete this collection once your team is up to speed with the basics!",
|
||||
type: "atlas",
|
||||
teamId: this.id,
|
||||
creatorId: userId,
|
||||
});
|
||||
|
||||
@@ -26,7 +26,6 @@ export default function present(collection: Collection) {
|
||||
description: collection.description,
|
||||
icon: collection.icon,
|
||||
color: collection.color || "#4E5C6E",
|
||||
type: collection.type,
|
||||
private: collection.private,
|
||||
createdAt: collection.createdAt,
|
||||
updatedAt: collection.updatedAt,
|
||||
@@ -34,10 +33,8 @@ export default function present(collection: Collection) {
|
||||
documents: undefined,
|
||||
};
|
||||
|
||||
if (collection.type === "atlas") {
|
||||
// Force alphabetical sorting
|
||||
data.documents = sortDocuments(collection.documentStructure);
|
||||
}
|
||||
// Force alphabetical sorting
|
||||
data.documents = sortDocuments(collection.documentStructure);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,6 @@ export async function buildCollection(overrides: Object = {}) {
|
||||
name: `Test Collection ${count}`,
|
||||
description: "Test collection description",
|
||||
creatorId: overrides.userId,
|
||||
type: "atlas",
|
||||
...overrides,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -60,7 +60,6 @@ const seed = async () => {
|
||||
urlId: "collection",
|
||||
teamId: team.id,
|
||||
creatorId: user.id,
|
||||
type: "atlas",
|
||||
});
|
||||
|
||||
const document = await Document.create({
|
||||
|
||||
Reference in New Issue
Block a user