import { Schema, model, models } from "mongoose";
import { createId } from "./ids";

export const stringId = {
  type: String,
  default: createId,
} as const;

export function applyIdTransform(schema: Schema) {
  const transform = (_doc: unknown, ret: Record<string, unknown>) => {
    ret.id = ret._id;
    delete ret._id;
    delete ret.__v;
    return ret;
  };

  schema.set("toJSON", { virtuals: true, versionKey: false, transform });
  schema.set("toObject", { virtuals: true, versionKey: false, transform });
}

/** Hot-reload-safe model registration (typed loosely to keep tsc memory sane). */
export function registerModel(name: string, schema: Schema): any {
  return (models[name] as any) ?? model(name, schema);
}
