import mongoose, { Schema, models, model } from "mongoose";
import { ACTIVITY_TYPES, type ActivityType } from "@/lib/orderConstants";

export { ACTIVITY_TYPES };
export type { ActivityType };

export interface OrderActivityDoc {
  _id: string;
  orderId: mongoose.Types.ObjectId;
  type: ActivityType;
  actor: "admin" | "client";
  message: string;
  createdAt: Date;
}

const orderActivitySchema = new Schema<OrderActivityDoc>(
  {
    orderId: { type: Schema.Types.ObjectId, ref: "Order", required: true, index: true },
    type: { type: String, enum: ACTIVITY_TYPES, required: true },
    actor: { type: String, enum: ["admin", "client"], required: true },
    message: { type: String, required: true, trim: true, maxlength: 500 },
  },
  { timestamps: true }
);

// Das Systemprotokoll (lib/logFeed.ts) filtert/sortiert nach createdAt.
orderActivitySchema.index({ createdAt: -1 });

export const OrderActivity =
  (models.OrderActivity as mongoose.Model<OrderActivityDoc>) ||
  model<OrderActivityDoc>("OrderActivity", orderActivitySchema);
