From 41950ba4de1f0028d4b34fc9a90899c288e87b90 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Mon, 15 Jul 2019 23:23:09 +0300 Subject: Teams/Organizations part 3, in progress. Table: org_user, and indexes. Thanks to xet7 ! Related #802 --- models/orgUser.js | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ server/migrations.js | 3 ++ 2 files changed, 83 insertions(+) create mode 100644 models/orgUser.js diff --git a/models/orgUser.js b/models/orgUser.js new file mode 100644 index 00000000..42bd548c --- /dev/null +++ b/models/orgUser.js @@ -0,0 +1,80 @@ +OrgUser = new Mongo.Collection('org_user'); + +/** + * A Organization User in wekan + */ +OrgUser.attachSchema( + new SimpleSchema({ + id: { + /** + * the organization user's id + */ + type: Number, + optional: true, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert && !this.isSet) { + return incrementCounter('counters', 'org_user_id', 1); + } + }, + }, + org_id: { + /** + * the organization id + */ + type: Number, + optional: true, + }, + user_id: { + /** + * the user id + */ + type: Number, + optional: true, + }, + role: { + /** + * the role of user + */ + type: String, + optional: true, + max: 20, + }, + createdAt: { + /** + * creation date of the organization user + */ + type: Date, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert) { + return new Date(); + } else { + this.unset(); + } + }, + }, + modifiedAt: { + type: Date, + denyUpdate: false, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert || this.isUpsert || this.isUpdate) { + return new Date(); + } else { + this.unset(); + } + }, + }, + }), +); + +if (Meteor.isServer) { + // Index for Organization User. + Meteor.startup(() => { + OrgUser._collection._ensureIndex({ org_id: -1 }); + OrgUser._collection._ensureIndex({ org_id: -1, user_id: -1 }); + }); +} + +export default OrgUser; diff --git a/server/migrations.js b/server/migrations.js index 8b902db2..6bb370d4 100644 --- a/server/migrations.js +++ b/server/migrations.js @@ -18,6 +18,7 @@ import Triggers from '../models/triggers'; import UnsavedEdits from '../models/unsavedEdits'; import Users from '../models/users'; import Org from '../models/org'; +import OrgUser from '../models/orgUser'; // Anytime you change the schema of one of the collection in a non-backward // compatible way you have to write a migration in this file using the following @@ -705,6 +706,7 @@ const firstBatchOfDbsToAddCreatedAndUpdated = [ Triggers, UnsavedEdits, Org, + OrgUser, ]; firstBatchOfDbsToAddCreatedAndUpdated.forEach(db => { @@ -740,6 +742,7 @@ const modifiedAtTables = [ UnsavedEdits, Users, Org, + OrgUser, ]; Migrations.add('add-missing-created-and-modified', () => { -- cgit v1.2.3-1-g7c22