import { y as defineEventHandler, b0 as useLogger, aa as getRouterParam, aE as readBody, d as Place, v as createError } from '../../../nitro/nitro.mjs';
import { r as requireAdminSession } from '../../../_/session.mjs';
import 'luxon';
import '@sequelize/core';
import 'html-to-text';
import 'zod';
import 'crypto';
import 'node:fs';
import 'sharp';
import 'path';
import 'node:stream';
import 'jsdom';
import 'dompurify';
import 'mime-types';
import 'fs';
import 'fs/promises';
import 'linkify-html';
import '@peertube/http-signature';
import 'jsonld';
import 'lodash.intersection';
import 'email-templates';
import 'node:http';
import 'node:https';
import 'node:crypto';
import 'node:events';
import 'node:buffer';
import 'node:path';
import 'vue';
import 'vue-router';
import 'dotenv';
import 'url';
import 'bcryptjs';
import 'slugify';
import 'umzug';
import 'consola';
import '@sequelize/core/decorators-legacy';
import 'util';
import 'mitt';
import 'ical.js';
import 'node:url';
import 'fast-xml-parser';
import '../../../_/getUser.mjs';
import '../../../_/jwt.mjs';
import 'jose';

const _id__put = defineEventHandler(async (evt) => {
  await requireAdminSession(evt);
  const log = useLogger("Update place");
  const id = getRouterParam(evt, "id");
  const body = await readBody(evt);
  const place = await Place.findByPk(id);
  if (!place) {
    log.warn(`Place not found: ${id}`);
    throw createError({ statusCode: 404 });
  }
  if (Number(body.id) !== place.id) {
    const newPlace = await Place.findByPk(body.id);
    if (!newPlace) {
      log.warn(`Place not found ${body.id}`);
      throw createError({ statusCode: 404 });
    }
    log.info(`Merging place ${newPlace.name} with ${place.name}`);
    const events = await place.getEvents();
    await place.removeEvents(events);
    await newPlace.addEvents(events);
    return place.destroy();
  } else {
    return place.update(body);
  }
});

export { _id__put as default };
