import { Schema } from "mongoose";

const UserSchema = new Schema({
  accessTokens: {
    github: { type: String },
  },
  accessTokenDates: {
    github: { type: Date },
  },
  externalIDs: {
    github: { type: String, index: true },
  },
  username: {
    type: String,
    index: { unique: true },
  },
  emails: [
    {
      email: { type: String },
      default: Boolean,
    },
  ],
  isAdmin: { type: Boolean, default: false },
  apiTokens: [
    {
      tokenHash: { type: String, index: true },
      name: { type: String },
      createdAt: { type: Date, default: Date.now },
      lastUsedAt: { type: Date },
    },
  ],
  photo: String,
  repositories: [
    {
      type: String,
      ref: "Repository",
    },
  ],
  default: {
    terms: [String],
    options: {
      expirationMode: { type: String },
      update: Boolean,
      image: Boolean,
      pdf: Boolean,
      notebook: Boolean,
      link: Boolean,
      page: { type: String },
    },
  },
  status: {
    type: String,
    default: "active",
  },
  dateOfEntry: {
    type: Date,
    default: new Date(),
  },
});

UserSchema.index({ dateOfEntry: 1 });

export default UserSchema;
