{"version":3,"file":"locales.mjs","sources":["../../../server/src/services/locales.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { DEFAULT_LOCALE } from '../constants';\nimport { getService, getCoreStore } from '../utils';\n\nconst find = (params: any = {}) =>\n  strapi.db.query('plugin::i18n.locale').findMany({ where: params });\n\nconst findById = (id: any) => strapi.db.query('plugin::i18n.locale').findOne({ where: { id } });\n\nconst findByCode = (code: any) =>\n  strapi.db.query('plugin::i18n.locale').findOne({ where: { code } });\n\nconst count = (params: any = {}) => strapi.db.query('plugin::i18n.locale').count({ where: params });\n\nconst create = async (locale: any) => {\n  const result = await strapi.db.query('plugin::i18n.locale').create({ data: locale });\n\n  getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n  return result;\n};\n\nconst update = async (params: any, updates: any) => {\n  const result = await strapi.db\n    .query('plugin::i18n.locale')\n    .update({ where: params, data: updates });\n\n  getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n  return result;\n};\n\nconst deleteFn = async ({ id }: any) => {\n  const localeToDelete = await findById(id);\n\n  if (localeToDelete) {\n    await deleteAllLocalizedEntriesFor({ locale: localeToDelete.code });\n    const result = await strapi.db.query('plugin::i18n.locale').delete({ where: { id } });\n\n    getService('metrics').sendDidUpdateI18nLocalesEvent();\n\n    return result;\n  }\n\n  return localeToDelete;\n};\n\nconst setDefaultLocale = ({ code }: any) =>\n  getCoreStore().set({ key: 'default_locale', value: code });\n\nconst getDefaultLocale = () => getCoreStore().get({ key: 'default_locale' });\n\nconst setIsDefault = async (locales: any) => {\n  if (isNil(locales)) {\n    return locales;\n  }\n\n  const actualDefault = await getDefaultLocale();\n\n  if (Array.isArray(locales)) {\n    return locales.map((locale) => ({ ...locale, isDefault: actualDefault === locale.code }));\n  }\n  // single locale\n  return { ...locales, isDefault: actualDefault === locales.code };\n};\n\nconst initDefaultLocale = async () => {\n  const existingLocalesNb = await strapi.db.query('plugin::i18n.locale').count();\n  if (existingLocalesNb === 0) {\n    await create(DEFAULT_LOCALE);\n    await setDefaultLocale({ code: DEFAULT_LOCALE.code });\n  }\n};\n\nconst deleteAllLocalizedEntriesFor = async ({ locale }: any) => {\n  const { isLocalizedContentType } = getService('content-types');\n\n  const localizedModels = Object.values(strapi.contentTypes).filter(isLocalizedContentType);\n\n  for (const model of localizedModels) {\n    // FIXME: delete many content & their associations\n    await strapi.db.query(model.uid).deleteMany({ where: { locale } });\n  }\n};\n\nconst locales = () => ({\n  find,\n  findById,\n  findByCode,\n  create,\n  update,\n  count,\n  setDefaultLocale,\n  getDefaultLocale,\n  setIsDefault,\n  delete: deleteFn,\n  initDefaultLocale,\n});\n\ntype LocaleService = typeof locales;\n\nexport default locales;\nexport type { LocaleService };\n"],"names":["find","params","strapi","db","query","findMany","where","findById","id","findOne","findByCode","code","count","create","locale","result","data","getService","sendDidUpdateI18nLocalesEvent","update","updates","deleteFn","localeToDelete","deleteAllLocalizedEntriesFor","delete","setDefaultLocale","getCoreStore","set","key","value","getDefaultLocale","get","setIsDefault","locales","isNil","actualDefault","Array","isArray","map","isDefault","initDefaultLocale","existingLocalesNb","DEFAULT_LOCALE","isLocalizedContentType","localizedModels","Object","values","contentTypes","filter","model","uid","deleteMany"],"mappings":"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"}