Merge branch 'kaleidos-issues/23/deleting-space-user-is-not-possible'
This commit is contained in:
commit
9889aaa34c
67
models/db.js
67
models/db.js
@ -1,7 +1,4 @@
|
||||
//'use strict';
|
||||
|
||||
//var mongoose = require('mongoose');
|
||||
//const sqlite3 = require('sqlite3').verbose();
|
||||
const Umzug = require('umzug');
|
||||
|
||||
function sequel_log(a,b,c) {
|
||||
console.log(a);
|
||||
@ -81,13 +78,13 @@ module.exports = {
|
||||
height: Sequelize.INTEGER,
|
||||
background_color: Sequelize.STRING,
|
||||
background_uri: Sequelize.STRING,
|
||||
|
||||
|
||||
created_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW},
|
||||
updated_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW},
|
||||
thumbnail_url: Sequelize.STRING,
|
||||
thumbnail_updated_at: {type: Sequelize.DATE}
|
||||
}),
|
||||
|
||||
|
||||
Membership: sequelize.define('membership', {
|
||||
_id: {type: Sequelize.STRING, primaryKey: true},
|
||||
space_id: Sequelize.STRING,
|
||||
@ -98,7 +95,7 @@ module.exports = {
|
||||
created_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW},
|
||||
updated_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW}
|
||||
}),
|
||||
|
||||
|
||||
Message: sequelize.define('message', {
|
||||
_id: {type: Sequelize.STRING, primaryKey: true},
|
||||
space_id: Sequelize.STRING,
|
||||
@ -108,7 +105,7 @@ module.exports = {
|
||||
created_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW},
|
||||
updated_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW}
|
||||
}),
|
||||
|
||||
|
||||
Artifact: sequelize.define('artifact', {
|
||||
_id: {type: Sequelize.STRING, primaryKey: true},
|
||||
space_id: Sequelize.STRING,
|
||||
@ -121,7 +118,7 @@ module.exports = {
|
||||
last_update_editor_name: Sequelize.STRING,
|
||||
description: Sequelize.TEXT,
|
||||
state: {type: Sequelize.STRING, default: "idle"},
|
||||
|
||||
|
||||
//linked_to: Sequelize.STRING,
|
||||
title: Sequelize.STRING,
|
||||
tags: Sequelize.TEXT,
|
||||
@ -142,16 +139,16 @@ module.exports = {
|
||||
//}],
|
||||
|
||||
control_points: Sequelize.TEXT,
|
||||
|
||||
|
||||
group: Sequelize.STRING,
|
||||
locked: {type: Sequelize.BOOLEAN, default: false},
|
||||
|
||||
|
||||
payload_uri: Sequelize.STRING,
|
||||
payload_thumbnail_web_uri: Sequelize.STRING,
|
||||
payload_thumbnail_medium_uri: Sequelize.STRING,
|
||||
payload_thumbnail_big_uri: Sequelize.STRING,
|
||||
payload_size: Sequelize.INTEGER, // file size in bytes
|
||||
|
||||
|
||||
fill_color: {type: Sequelize.STRING, default: "transparent"},
|
||||
stroke_color: {type: Sequelize.STRING, default: "#000000"},
|
||||
text_color: Sequelize.STRING,
|
||||
@ -176,7 +173,7 @@ module.exports = {
|
||||
border_radius: Sequelize.INTEGER,
|
||||
align: {type: Sequelize.STRING, default: "left"},
|
||||
valign: {type: Sequelize.STRING, default: "top"},
|
||||
|
||||
|
||||
brightness: Sequelize.DECIMAL,
|
||||
contrast: Sequelize.DECIMAL,
|
||||
saturation: Sequelize.DECIMAL,
|
||||
@ -185,7 +182,7 @@ module.exports = {
|
||||
opacity: Sequelize.DECIMAL,
|
||||
|
||||
payload_alternatives: Sequelize.TEXT,
|
||||
|
||||
|
||||
/*payload_alternatives: [{
|
||||
mime: String,
|
||||
payload_uri: String,
|
||||
@ -194,12 +191,12 @@ module.exports = {
|
||||
payload_thumbnail_big_uri: String,
|
||||
payload_size: Number
|
||||
}],*/
|
||||
|
||||
|
||||
created_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW},
|
||||
updated_at: {type: Sequelize.DATE, defaultValue: Sequelize.NOW}
|
||||
}),
|
||||
|
||||
init: function() {
|
||||
|
||||
init: async function() {
|
||||
User = this.User;
|
||||
Session = this.Session;
|
||||
Space = this.Space;
|
||||
@ -220,49 +217,69 @@ module.exports = {
|
||||
},
|
||||
as: 'user'
|
||||
});
|
||||
|
||||
|
||||
Membership.belongsTo(Space, {
|
||||
foreignKey: {
|
||||
name: 'space_id'
|
||||
},
|
||||
as: 'space'
|
||||
});
|
||||
|
||||
|
||||
Artifact.belongsTo(User, {
|
||||
foreignKey: {
|
||||
name: 'user_id'
|
||||
},
|
||||
as: 'user'
|
||||
});
|
||||
|
||||
|
||||
Artifact.belongsTo(Space, {
|
||||
foreignKey: {
|
||||
name: 'space_id'
|
||||
},
|
||||
as: 'space'
|
||||
});
|
||||
|
||||
|
||||
Message.belongsTo(User, {
|
||||
foreignKey: {
|
||||
name: 'user_id'
|
||||
},
|
||||
as: 'user'
|
||||
});
|
||||
|
||||
|
||||
Message.belongsTo(Space, {
|
||||
foreignKey: {
|
||||
name: 'space_id'
|
||||
},
|
||||
as: 'space'
|
||||
});
|
||||
|
||||
sequelize.sync();
|
||||
|
||||
await sequelize.sync();
|
||||
|
||||
var umzug = new Umzug({
|
||||
storage: 'sequelize',
|
||||
storageOptions: {
|
||||
sequelize: sequelize
|
||||
},
|
||||
migrations: {
|
||||
params: [
|
||||
sequelize.getQueryInterface(),
|
||||
Sequelize
|
||||
],
|
||||
path: './models/migrations',
|
||||
pattern: /\.js$/
|
||||
}
|
||||
});
|
||||
|
||||
umzug.up().then(function(migrations) {
|
||||
console.log('Migration complete up!');
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
getUserRoleInSpace: (originalSpace, user, cb) => {
|
||||
originalSpace.path = [];
|
||||
console.log("getUserRoleInSpace",originalSpace._id,user._id,user.home_folder_id);
|
||||
|
||||
|
||||
if (originalSpace._id == user.home_folder_id || (originalSpace.creator_id && originalSpace.creator_id == user._id)) {
|
||||
cb("admin");
|
||||
} else {
|
||||
|
80
models/migrations/01-spaces-delete-cascade.js
Normal file
80
models/migrations/01-spaces-delete-cascade.js
Normal file
@ -0,0 +1,80 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
up: function(migration, DataTypes) {
|
||||
return [
|
||||
migration.changeColumn('memberships', 'space_id',
|
||||
{
|
||||
type: DataTypes.STRING,
|
||||
references: {
|
||||
model: 'spaces',
|
||||
key: '_id'
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE'
|
||||
}
|
||||
),
|
||||
migration.changeColumn('artifacts', 'space_id',
|
||||
{
|
||||
type: DataTypes.STRING,
|
||||
references: {
|
||||
model: 'spaces',
|
||||
key: '_id'
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE'
|
||||
}
|
||||
),
|
||||
migration.changeColumn('messages', 'space_id',
|
||||
{
|
||||
type: DataTypes.STRING,
|
||||
references: {
|
||||
model: 'spaces',
|
||||
key: '_id'
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE'
|
||||
}
|
||||
)
|
||||
]
|
||||
},
|
||||
|
||||
down: function(migration, DataTypes) {
|
||||
return [
|
||||
migration.changeColumn('memberships', 'space_id',
|
||||
{
|
||||
type: DataTypes.STRING,
|
||||
references: {
|
||||
model: 'spaces',
|
||||
key: '_id'
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'NO ACTION'
|
||||
}
|
||||
),
|
||||
,
|
||||
migration.changeColumn('artifacts', 'space_id',
|
||||
{
|
||||
type: DataTypes.STRING,
|
||||
references: {
|
||||
model: 'spaces',
|
||||
key: '_id'
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'NO ACTION'
|
||||
}
|
||||
),
|
||||
migration.changeColumn('messages', 'space_id',
|
||||
{
|
||||
type: DataTypes.STRING,
|
||||
references: {
|
||||
model: 'spaces',
|
||||
key: '_id'
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'NO ACTION'
|
||||
}
|
||||
)
|
||||
]
|
||||
}
|
||||
};
|
@ -40,6 +40,7 @@
|
||||
"slug": "0.9.1",
|
||||
"sqlite3": "^4.0.0",
|
||||
"swig": "1.4.2",
|
||||
"umzug": "^2.1.0",
|
||||
"underscore": "1.8.3",
|
||||
"uuid": "^3.2.1",
|
||||
"validator": "7.0.0",
|
||||
|
Loading…
Reference in New Issue
Block a user