Explorar o código

Teams/Organizations part 3, in progress. Table: org_user, and indexes.

Thanks to xet7 !

Related #802
Lauri Ojansivu %!s(int64=5) %!d(string=hai) anos
pai
achega
41950ba4de
Modificáronse 2 ficheiros con 83 adicións e 0 borrados
  1. 80 0
      models/orgUser.js
  2. 3 0
      server/migrations.js

+ 80 - 0
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;

+ 3 - 0
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', () => {