All files / services/scheduler-service/src/models CrawlerSchedule.js

100% Statements 69/69
100% Branches 1/1
100% Functions 0/0
100% Lines 69/69

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 701x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
const mongoose = require('mongoose');
 
const crawlerScheduleSchema = new mongoose.Schema({
  organizationId: {
    type: String,
    required: true,
    index: true,
  },
  configId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'CrawlerConfig',
    required: true,
  },
  name: {
    type: String,
    default: '',
  },
  cronExpression: {
    type: String,
    required: true,
  },
  timezone: {
    type: String,
    default: 'UTC',
  },
  isActive: {
    type: Boolean,
    default: true,
  },
  temporalScheduleId: {
    type: String,
    default: null,
  },
  lastRunAt: {
    type: Date,
    default: null,
  },
  nextRunAt: {
    type: Date,
    default: null,
  },
  runCount: {
    type: Number,
    default: 0,
  },
  lastJobId: {
    type: String,
    default: null,
  },
  lastRunStatus: {
    type: String,
    enum: ['success', 'failed', 'pending', null],
    default: null,
  },
  createdBy: {
    type: String,
    default: null,
  },
  apiKeyId: {
    type: String,
    default: null,
  },
}, {
  timestamps: true,
});
 
crawlerScheduleSchema.index({ organizationId: 1, createdAt: -1 });
 
module.exports = mongoose.model('CrawlerSchedule', crawlerScheduleSchema, 'crawlerschedules');