adds meilisearch

This commit is contained in:
Christian Beutel
2024-02-03 14:26:47 +01:00
parent 905995a01c
commit c370690747
14 changed files with 242 additions and 66 deletions

View File

@@ -1,5 +1,6 @@
<script lang="ts">
import type { Trail } from "$lib/models/trail";
import { currentUser } from "$lib/stores/user_store";
import { formatMeters, formatTimeHHMM } from "$lib/util/format_util";
import Dropdown from "../base/dropdown.svelte";
@@ -19,7 +20,9 @@
<div>
<div class="flex justify-between items-center">
<h4 class="font-semibold text-lg">{trail.name}</h4>
<Dropdown on:change items={dropdownItems}></Dropdown>
{#if $currentUser && $currentUser.id == trail.author}
<Dropdown on:change items={dropdownItems}></Dropdown>
{/if}
</div>
<h5><i class="fa fa-location-dot mr-3"></i>{trail.location}</h5>
</div>

View File

@@ -0,0 +1,10 @@
import { PUBLIC_MEILISEARCH_URL } from '$env/static/public'
import { PUBLIC_MEILISEARCH_API_KEY } from '$env/static/public'
import { MeiliSearch } from 'meilisearch'
export function createInstance() {
return new MeiliSearch({ host: PUBLIC_MEILISEARCH_URL, apiKey: PUBLIC_MEILISEARCH_API_KEY })
}
export const ms = createInstance()

View File

@@ -11,6 +11,8 @@ class Trail {
distance?: number;
elevation_gain?: number;
duration?: number;
lat?: number;
lon?: number;
thumbnail?: string;
photos: string[];
gpx?: string;
@@ -22,6 +24,7 @@ class Trail {
}
tags?: string[];
description?: string;
author?: string;
_photoFiles: File[]
@@ -33,6 +36,8 @@ class Trail {
distance?: number,
elevation_gain?: number,
duration?: number,
lat?:number,
lon?: number,
thumbnail?: string,
photos?: string[],
gpx?: string,
@@ -51,6 +56,8 @@ class Trail {
this.distance = params?.distance;
this.elevation_gain = params?.elevation_gain;
this.duration = params?.duration;
this.lat = params?.lat;
this.lon = params?.lon;
this.thumbnail = params?.thumbnail;
this.photos = params?.photos ?? [];
this.gpx = params?.gpx;

View File

@@ -7,6 +7,7 @@ import { util } from "$lib/vendor/svelte-form-lib/util";
import { writable, type Writable } from "svelte/store";
import { summit_logs_create, summit_logs_delete, summit_logs_update } from "./summit_log_store";
import { waypoints_create, waypoints_delete, waypoints_update } from "./waypoint_store";
import { ms } from "$lib/meilisearch";
export const trails: Writable<Trail[]> = writable([])
export const trail: Writable<Trail> = writable(new Trail(""));
@@ -26,7 +27,7 @@ export async function trails_index() {
}
export async function trails_show(id: string, loadGPX?: boolean) {
const response: Trail = await pb.collection('trails').getOne<Trail>(id, { expand: "category,waypoints,summit_logs" })
const response: Trail = await pb.collection('trails').getOne<Trail>(id, { expand: "category,waypoints,summit_logs" })
if (loadGPX) {
const gpxData: string = await fetchGPX(response);
@@ -91,6 +92,8 @@ export async function trails_create(trail: Trail, formData: { [key: string]: any
.collection("trails")
.update<Trail>(model.id!, { thumbnail: thumbnail });
index_trail(model);
return model;
}
@@ -169,7 +172,9 @@ export async function trails_update(oldTrail: Trail, newTrail: Trail, formData:
trail.set(model);
// return model;
index_trail(model);
return model;
}
@@ -231,3 +236,21 @@ function compareObjectArrays<T extends { id?: string }>(oldArray: T[], newArray:
};
}
function index_trail(trail: Trail) {
ms.index('trails').addDocuments([
{
"id": trail.id,
"name": trail.name,
"description": trail.description,
"location": trail.location,
"distance": trail.distance,
"elevation_gain": trail.elevation_gain,
"duration": trail.duration,
"category": trail.expand.category?.name,
"_geo": {
"lat": trail.lat,
"lng": trail.lon,
}
}]);
}