summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2019-07-15 23:23:09 +0300
committerLauri Ojansivu <x@xet7.org>2019-07-15 23:23:09 +0300
commit41950ba4de1f0028d4b34fc9a90899c288e87b90 (patch)
tree3649ca91f3e1ab99c5753d21f183939e432ce451
parent583f32e5c5233b1fe435dad23a95ee2872b7cc7c (diff)
downloadwekan-41950ba4de1f0028d4b34fc9a90899c288e87b90.tar.gz
wekan-41950ba4de1f0028d4b34fc9a90899c288e87b90.tar.bz2
wekan-41950ba4de1f0028d4b34fc9a90899c288e87b90.zip
Teams/Organizations part 3, in progress. Table: org_user, and indexes.
Thanks to xet7 ! Related #802
-rw-r--r--models/orgUser.js80
-rw-r--r--server/migrations.js3
2 files changed, 83 insertions, 0 deletions
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', () => {