transfer-key.ts 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. import { Model, Schema, HydratedDocument } from 'mongoose';
  2. import { ITransferKey } from '~/interfaces/transfer-key';
  3. import loggerFactory from '../../utils/logger';
  4. import { getOrCreateModel } from '../util/mongoose-utils';
  5. const logger = loggerFactory('growi:models:transfer-key');
  6. interface ITransferKeyMethods {
  7. findOneActiveTransferKey(key: string): Promise<HydratedDocument<ITransferKey, ITransferKeyMethods> | null>;
  8. }
  9. type TransferKeyModel = Model<ITransferKey, any, ITransferKeyMethods>;
  10. const schema = new Schema<ITransferKey, TransferKeyModel, ITransferKeyMethods>({
  11. expireAt: { type: Date, default: () => new Date(), expires: '30m' },
  12. keyString: { type: String, unique: true }, // original key string
  13. key: { type: String, unique: true },
  14. }, {
  15. timestamps: {
  16. createdAt: true,
  17. updatedAt: false,
  18. },
  19. });
  20. schema.statics.findOneActiveTransferKey = async function(key: string): Promise<HydratedDocument<ITransferKey, ITransferKeyMethods> | null> {
  21. return this.findOne({ key });
  22. };
  23. export default getOrCreateModel('TransferKey', schema);