2026-11-03 10:14:53 [ERROR]: Create customer plan error: Validation error
Stack: Error
    at Query.run (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/dialects/postgres/query.js:50:25)
    at /var/www/html/customer_onboard_backend/node_modules/sequelize/lib/sequelize.js:315:28
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async PostgresQueryInterface.insert (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/dialects/abstract/query-interface.js:308:21)
    at async model.save (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/model.js:2490:35)
    at async customer_plans.create (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/model.js:1362:12)
    at async CustomerPlanService.createCustomerPlan (/var/www/html/customer_onboard_backend/src/application/services/customerPlan.service.js:63:28)
    at async /var/www/html/customer_onboard_backend/src/api/controllers/customerPlan.controller.js:13:20
Meta: {
  "name": "SequelizeUniqueConstraintError",
  "errors": [
    {
      "message": "customer_id must be unique",
      "type": "unique violation",
      "path": "customer_id",
      "value": "25fd0c8b-d88e-4947-ae77-4fd72eca112b",
      "origin": "DB",
      "instance": {
        "created_at": "2026-11-03T04:44:53.375Z",
        "updated_at": "2026-11-03T04:44:53.375Z",
        "id": "0aaa88e3-f0c1-4aac-ae92-221012f1d644",
        "customer_id": "25fd0c8b-d88e-4947-ae77-4fd72eca112b",
        "plan_id": "0dcba62a-06ec-4e1d-ab05-24452b655b2f",
        "price_per_month": 200,
        "price_per_year": 2400,
        "status": "active",
        "is_admin_approved": true,
        "assigned_by": "ff71ba8d-89e1-4960-9cf8-8a78f8caaa73",
        "notes": ""
      },
      "validatorKey": "not_unique",
      "validatorName": null,
      "validatorArgs": []
    },
    {
      "message": "plan_id must be unique",
      "type": "unique violation",
      "path": "plan_id",
      "value": "0dcba62a-06ec-4e1d-ab05-24452b655b2f",
      "origin": "DB",
      "instance": {
        "created_at": "2026-11-03T04:44:53.375Z",
        "updated_at": "2026-11-03T04:44:53.375Z",
        "id": "0aaa88e3-f0c1-4aac-ae92-221012f1d644",
        "customer_id": "25fd0c8b-d88e-4947-ae77-4fd72eca112b",
        "plan_id": "0dcba62a-06ec-4e1d-ab05-24452b655b2f",
        "price_per_month": 200,
        "price_per_year": 2400,
        "status": "active",
        "is_admin_approved": true,
        "assigned_by": "ff71ba8d-89e1-4960-9cf8-8a78f8caaa73",
        "notes": ""
      },
      "validatorKey": "not_unique",
      "validatorName": null,
      "validatorArgs": []
    }
  ],
  "parent": {
    "length": 310,
    "name": "error",
    "severity": "ERROR",
    "code": "23505",
    "detail": "Key (customer_id, plan_id)=(25fd0c8b-d88e-4947-ae77-4fd72eca112b, 0dcba62a-06ec-4e1d-ab05-24452b655b2f) already exists.",
    "schema": "public",
    "table": "customer_plans",
    "constraint": "uniq_active_customer_plan",
    "file": "nbtinsert.c",
    "line": "663",
    "routine": "_bt_check_unique",
    "sql": "INSERT INTO \"customer_plans\" (\"id\",\"customer_id\",\"plan_id\",\"price_per_month\",\"price_per_year\",\"status\",\"is_admin_approved\",\"assigned_by\",\"notes\",\"created_at\",\"updated_at\") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11) RETURNING \"id\",\"customer_id\",\"plan_id\",\"price_per_month\",\"price_per_year\",\"status\",\"is_admin_approved\",\"assigned_by\",\"notes\",\"created_at\",\"updated_at\",\"deleted_at\";",
    "parameters": [
      "0aaa88e3-f0c1-4aac-ae92-221012f1d644",
      "25fd0c8b-d88e-4947-ae77-4fd72eca112b",
      "0dcba62a-06ec-4e1d-ab05-24452b655b2f",
      200,
      2400,
      "active",
      true,
      "ff71ba8d-89e1-4960-9cf8-8a78f8caaa73",
      "",
      "2026-11-03 04:44:53.375 +00:00",
      "2026-11-03 04:44:53.375 +00:00"
    ]
  },
  "original": {
    "length": 310,
    "name": "error",
    "severity": "ERROR",
    "code": "23505",
    "detail": "Key (customer_id, plan_id)=(25fd0c8b-d88e-4947-ae77-4fd72eca112b, 0dcba62a-06ec-4e1d-ab05-24452b655b2f) already exists.",
    "schema": "public",
    "table": "customer_plans",
    "constraint": "uniq_active_customer_plan",
    "file": "nbtinsert.c",
    "line": "663",
    "routine": "_bt_check_unique",
    "sql": "INSERT INTO \"customer_plans\" (\"id\",\"customer_id\",\"plan_id\",\"price_per_month\",\"price_per_year\",\"status\",\"is_admin_approved\",\"assigned_by\",\"notes\",\"created_at\",\"updated_at\") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11) RETURNING \"id\",\"customer_id\",\"plan_id\",\"price_per_month\",\"price_per_year\",\"status\",\"is_admin_approved\",\"assigned_by\",\"notes\",\"created_at\",\"updated_at\",\"deleted_at\";",
    "parameters": [
      "0aaa88e3-f0c1-4aac-ae92-221012f1d644",
      "25fd0c8b-d88e-4947-ae77-4fd72eca112b",
      "0dcba62a-06ec-4e1d-ab05-24452b655b2f",
      200,
      2400,
      "active",
      true,
      "ff71ba8d-89e1-4960-9cf8-8a78f8caaa73",
      "",
      "2026-11-03 04:44:53.375 +00:00",
      "2026-11-03 04:44:53.375 +00:00"
    ]
  },
  "fields": {
    "customer_id": "25fd0c8b-d88e-4947-ae77-4fd72eca112b",
    "plan_id": "0dcba62a-06ec-4e1d-ab05-24452b655b2f"
  },
  "sql": "INSERT INTO \"customer_plans\" (\"id\",\"customer_id\",\"plan_id\",\"price_per_month\",\"price_per_year\",\"status\",\"is_admin_approved\",\"assigned_by\",\"notes\",\"created_at\",\"updated_at\") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11) RETURNING \"id\",\"customer_id\",\"plan_id\",\"price_per_month\",\"price_per_year\",\"status\",\"is_admin_approved\",\"assigned_by\",\"notes\",\"created_at\",\"updated_at\",\"deleted_at\";"
}
2026-11-03 10:14:53 [ERROR]: Validation error
Stack: Error
    at Query.run (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/dialects/postgres/query.js:50:25)
    at /var/www/html/customer_onboard_backend/node_modules/sequelize/lib/sequelize.js:315:28
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async PostgresQueryInterface.insert (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/dialects/abstract/query-interface.js:308:21)
    at async model.save (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/model.js:2490:35)
    at async customer_plans.create (/var/www/html/customer_onboard_backend/node_modules/sequelize/lib/model.js:1362:12)
    at async CustomerPlanService.createCustomerPlan (/var/www/html/customer_onboard_backend/src/application/services/customerPlan.service.js:63:28)
    at async /var/www/html/customer_onboard_backend/src/api/controllers/customerPlan.controller.js:13:20
Meta: {
  "type": "ERROR",
  "actor": "ff71ba8d-89e1-4960-9cf8-8a78f8caaa73",
  "entity": null,
  "entityId": null,
  "context": "CustomerPlanService.createCustomerPlan",
  "meta": {
    "customerId": "25fd0c8b-d88e-4947-ae77-4fd72eca112b",
    "planId": "0dcba62a-06ec-4e1d-ab05-24452b655b2f",
    "prices": {
      "price_per_month": 200,
      "price_per_year": 2400,
      "notes": ""
    },
    "userRole": "admin"
  },
  "ipAddress": "192.168.100.164",
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36"
}
