adds meilisearch
This commit is contained in:
@@ -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>
|
||||
|
||||
10
web/src/lib/meilisearch.ts
Normal file
10
web/src/lib/meilisearch.ts
Normal 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()
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user