|
|
@@ -1,4 +1,4 @@
|
|
|
-import { Schema } from 'mongoose';
|
|
|
+import { Model, Schema, HydratedDocument } from 'mongoose';
|
|
|
|
|
|
import { ITransferKey } from '~/interfaces/transfer-key';
|
|
|
|
|
|
@@ -7,7 +7,13 @@ import { getOrCreateModel } from '../util/mongoose-utils';
|
|
|
|
|
|
const logger = loggerFactory('growi:models:transfer-key');
|
|
|
|
|
|
-const schema = new Schema<ITransferKey>({
|
|
|
+interface ITransferKeyMethods {
|
|
|
+ findOneActiveTransferKey(transferKeyString: string): Promise<HydratedDocument<ITransferKey, ITransferKeyMethods> | null>;
|
|
|
+}
|
|
|
+
|
|
|
+type TransferKeyModel = Model<ITransferKey, {}, ITransferKeyMethods>;
|
|
|
+
|
|
|
+const schema = new Schema<ITransferKey, TransferKeyModel, ITransferKeyMethods>({
|
|
|
expireAt: { type: Date, default: () => new Date(), expires: '30m' },
|
|
|
value: { type: String, unique: true },
|
|
|
}, {
|
|
|
@@ -17,4 +23,17 @@ const schema = new Schema<ITransferKey>({
|
|
|
},
|
|
|
});
|
|
|
|
|
|
+schema.statics.findOneActiveTransferKey = async function(transferKeyString: string): Promise<HydratedDocument<ITransferKey, ITransferKeyMethods> | null> {
|
|
|
+ let tk: HydratedDocument<ITransferKey, ITransferKeyMethods> | null;
|
|
|
+ try {
|
|
|
+ tk = await this.findOne({ value: transferKeyString });
|
|
|
+ }
|
|
|
+ catch (err) {
|
|
|
+ logger.error(err);
|
|
|
+ throw err;
|
|
|
+ }
|
|
|
+
|
|
|
+ return tk;
|
|
|
+};
|
|
|
+
|
|
|
export default getOrCreateModel('TransferKey', schema);
|