Procházet zdrojové kódy

Merge pull request #31783 from overleaf/jel-mongo-domainVerification

[web] Add `domainVerifications` collection

GitOrigin-RevId: 5a9fe9ea80ecf76af9802014149ae785cc4412d5
Jessica Lawshe před 5 měsíci
rodič
revize
e89c9128c3

+ 1 - 0
services/web/app/src/infrastructure/mongodb.mjs

@@ -38,6 +38,7 @@ export const db = {
   deletedProjects: internalDb.collection('deletedProjects'),
   deletedSubscriptions: internalDb.collection('deletedSubscriptions'),
   deletedUsers: internalDb.collection('deletedUsers'),
+  domainVerifications: internalDb.collection('domainVerifications'),
   dropboxEntities: internalDb.collection('dropboxEntities'),
   dropboxProjects: internalDb.collection('dropboxProjects'),
   docSnapshots: internalDb.collection('docSnapshots'),

+ 33 - 0
services/web/app/src/models/DomainVerification.mjs

@@ -0,0 +1,33 @@
+import mongoose from '../infrastructure/Mongoose.mjs'
+const { Schema } = mongoose
+
+export const DomainVerificationSchema = new Schema(
+  {
+    domain: {
+      type: String,
+      required: true,
+      unique: true,
+    },
+    token: { type: String, required: true },
+    status: {
+      type: String,
+      enum: ['pending', 'verified', 'failed'],
+      default: 'pending',
+    },
+    createdAt: { type: Date, default: Date.now },
+    verifiedAt: Date,
+    reverifiedAt: Date,
+    verificationAttemptCount: { type: Number, default: 0 },
+    groupId: Schema.Types.ObjectId,
+    lastVerificationAttemptAt: Date,
+  },
+  {
+    collection: 'domainVerifications',
+    minimize: false,
+  }
+)
+
+export const DomainVerification = mongoose.model(
+  'DomainVerification',
+  DomainVerificationSchema
+)

+ 32 - 0
tools/migrations/20260225162503_add_index_domainVerifications.mjs

@@ -0,0 +1,32 @@
+/* eslint-disable no-unused-vars */
+
+import Helpers from './lib/helpers.mjs'
+
+const tags = ['saas']
+
+const indexes = [
+  {
+    key: { domain: 1 },
+    name: 'domain_1',
+    unique: true,
+  },
+]
+
+const migrate = async client => {
+  const { db } = client
+
+  await Helpers.addIndexesToCollection(db.domainVerifications, indexes)
+}
+
+const rollback = async client => {
+  const { db } = client
+  await Helpers.dropIndexesFromCollection(db.domainVerifications, [
+    { name: 'domain_1' },
+  ])
+}
+
+export default {
+  tags,
+  migrate,
+  rollback,
+}

+ 1 - 0
tools/migrations/lib/mongodb.mjs

@@ -20,6 +20,7 @@ export const db = {
   dropboxProjects: internalDb.collection('dropboxProjects'),
   docSnapshots: internalDb.collection('docSnapshots'),
   docs: internalDb.collection('docs'),
+  domainVerifications: internalDb.collection('domainVerifications'),
   feedbacks: internalDb.collection('feedbacks'),
   githubSyncEntityVersions: internalDb.collection('githubSyncEntityVersions'),
   githubSyncProjectStates: internalDb.collection('githubSyncProjectStates'),