/**
  * @description Generate search meta
  * @param {Partial<EntityAlias>} data
  * @param {Partial<EntityAlias>} old used on update
  * @returns {string}
  */
  
_generateSearchMeta(
  data: Partial<EntityAlias>,
  old?: Partial<EntityAlias>
): string {
  /**
    * Define the search meta
    */
  const search_meta: { [Key in DocumentProperties]?: string } = {
    /**
      * TODO: Add more fields to the search meta
      */
    // ...
    {{#if ENTITY_META.has_title}}
    title: data.title,
    {{/if}}
    {{#if ENTITY_META.has_tracking_id}}
    tracking_id: data.tracking_id,
    {{/if}}
    {{#if ENTITY_META.has_slug}}
    slug: data.slug,
    {{/if}}
    {{#if ENTITY_META.has_name}}
    name: data.name,
    {{/if}}
    {{#if ENTITY_META.has_description}}
    description: data.description,
    {{/if}}

  };

  /**
    * Add old values if not provided in the new data
    */
  if (old) {
    /**
      * TODO: Add more fields to the search meta
      */
    // ...
    {{#if ENTITY_META.has_title}}
    if (typeof data.title === "undefined") search_meta.title = old.title;
    {{/if}}
    {{#if ENTITY_META.has_tracking_id}}
    if (typeof data.tracking_id === "undefined")
      search_meta.tracking_id = old.tracking_id;
    {{/if}}
    {{#if ENTITY_META.has_slug}}
    if (typeof data.slug === "undefined") search_meta.slug = old.slug;
    {{/if}}
    {{#if ENTITY_META.has_name}}
    if (typeof data.name === "undefined") search_meta.name = old.name;
    {{/if}}
    {{#if ENTITY_META.has_description}}
    if (typeof data.description === "undefined")
      search_meta.description = old.description;
    {{/if}}
  }

  this.logExecutionResult(this._generateSearchMeta, { data, old }, null, {
    search_meta,
  });

  /**
    * Return the search meta
    */
  return Object.values(search_meta)
    .filter((s) => !!s)
    .join(" ")
    .replaceAll("  ", " ")
    .trim();
}
