diff --git a/.gitignore b/.gitignore index fa0761f3..f6f8ee33 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,5 @@ search/meilisearch search/data.ms -search/dumps run.sh \ No newline at end of file diff --git a/db/Dockerfile b/db/Dockerfile index 1e0c6f0a..e761b57e 100644 --- a/db/Dockerfile +++ b/db/Dockerfile @@ -6,7 +6,6 @@ WORKDIR / COPY go.mod ./ COPY go.sum ./ COPY migrations ./migrations -RUN tar -xvf migrations/initial_data/cities500.tar.gz -C migrations/initial_data RUN go mod download diff --git a/db/main.go b/db/main.go index 366c153f..54b8631f 100644 --- a/db/main.go +++ b/db/main.go @@ -115,11 +115,6 @@ func main() { } } - // bootstrap meilisearch - if err := bootstrapMeilisearch(client); err != nil { - return err - } - return nil }) diff --git a/db/meilisearch.go b/db/meilisearch.go index 9ba4574b..3415cc62 100644 --- a/db/meilisearch.go +++ b/db/meilisearch.go @@ -1,102 +1,13 @@ package main import ( - "encoding/json" "errors" - "io" "log" - "os" "github.com/meilisearch/meilisearch-go" "github.com/pocketbase/pocketbase/models" ) -func hasIndex(index string, client *meilisearch.Client) (resp bool, err error) { - - if _, err := client.GetIndex(index); err != nil { - if err.(*meilisearch.Error).StatusCode == 404 { - return false, nil - } - return false, err - } - return true, nil -} - -func bootstrapMeilisearch(client *meilisearch.Client) error { - indexExists, err := hasIndex("cities500", client) - if err != nil { - return err - } - if !indexExists { - - jsonFile, err := os.Open("migrations/initial_data/cities500.json") - - if err != nil { - return err - } - defer jsonFile.Close() - - byteValue, err := io.ReadAll(jsonFile) - - if err != nil { - return err - } - var cities []map[string]interface{} - json.Unmarshal(byteValue, &cities) - - _, err = client.CreateIndex(&meilisearch.IndexConfig{ - Uid: "cities500", - PrimaryKey: "id", - }) - if err != nil { - return err - } - settings := meilisearch.Settings{ - SortableAttributes: []string{ - "_geo", - }, - FilterableAttributes: []string{ - "_geo", - }, - } - _, err = client.Index("cities500").UpdateSettings(&settings) - if err != nil { - return err - } - _, err = client.Index("cities500").AddDocuments(cities) - if err != nil { - return (err) - } - } - - indexExists, err = hasIndex("trails", client) - if err != nil { - return err - } - if !indexExists { - _, err = client.CreateIndex(&meilisearch.IndexConfig{ - Uid: "trails", - PrimaryKey: "id", - }) - if err != nil { - return err - } - settings := meilisearch.Settings{ - SortableAttributes: []string{ - "name", "distance", "elevation_gain", "difficulty", "created", - }, - FilterableAttributes: []string{ - "category", "difficulty", "distance", "elevation_gain", "completed", "_geo", "public", "author", - }, - } - _, err = client.Index("trails").UpdateSettings(&settings) - if err != nil { - return err - } - } - return nil -} - func indexRecord(r *models.Record, client *meilisearch.Client) error { documents := []map[string]interface{}{ { diff --git a/docker-compose.yml b/docker-compose.yml index e714e779..c070a76f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ x-common-env: &cenv services: search: container_name: wanderer-search - image: getmeili/meilisearch:v1.6.2 + build: ./search environment: <<: *cenv MEILI_NO_ANALYTICS: true diff --git a/search/Dockerfile b/search/Dockerfile new file mode 100644 index 00000000..955e3f05 --- /dev/null +++ b/search/Dockerfile @@ -0,0 +1,10 @@ +FROM getmeili/meilisearch:v1.6.2 + +COPY ./migrations/migration.dump /meili_data/dumps/migration.dump +COPY ./run.sh /run.sh + +RUN chmod +x /run.sh + +CMD [ "/run.sh" ] + + diff --git a/search/migrations/migration.dump b/search/migrations/migration.dump new file mode 100644 index 00000000..056edab7 Binary files /dev/null and b/search/migrations/migration.dump differ