transfer-key.ts 991 B

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