feat: fulltext search with meillisearch; deploy in devenv & CI; index product #56

Merged
realaravinth merged 3 commits from fts into master 2024-07-17 20:34:24 +05:30
3 changed files with 66 additions and 0 deletions
Showing only changes of commit 7103116c0f - Show all commits

View file

@ -29,3 +29,7 @@ pool = 4
url="smtps://username:password@smtp.example.com:465" url="smtps://username:password@smtp.example.com:465"
from="Vanikam Info <vanikam@example.com>" from="Vanikam Info <vanikam@example.com>"
reply_to="Vanikam Support <vanikam@example.com>" reply_to="Vanikam Support <vanikam@example.com>"
[meili]
url = "http://localhost:7700"
#api_key = ""

58
src/settings/meili.rs Normal file
View file

@ -0,0 +1,58 @@
// SPDX-FileCopyrightText: 2024 Aravinth Manivannan <realaravinth@batsense.net>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
use std::env;
use config::{builder::DefaultState, ConfigBuilder};
use serde::Deserialize;
use validator::Validate;
#[derive(Debug, Clone, Validate, Deserialize, Eq, PartialEq)]
pub struct Meili {
#[validate(url)]
pub url: String,
pub api_key: String,
}
impl Meili {
pub fn env_override(mut s: ConfigBuilder<DefaultState>) -> ConfigBuilder<DefaultState> {
for (parameter, env_var_name) in [
("meili.url", "VANIKAM_meili_URL"),
("meili.api_key", "VANIKAM_meili_API_KEY"),
]
.iter()
{
if let Ok(val) = env::var(env_var_name) {
log::debug!("Overriding [{parameter}] with environment variable {env_var_name}");
s = s.set_override(parameter, val).unwrap();
}
}
s
}
}
#[cfg(test)]
mod tests {
use crate::env_helper;
use super::*;
#[test]
fn test_meili_env_override() {
let init_settings = crate::settings::Settings::new().unwrap();
env_helper!(
init_settings,
"VANIKAM_meili_URL",
"https://test_meili_env_override.org",
meili.url
);
env_helper!(
init_settings,
"VANIKAM_meili_API_KEY",
"apitestketkere",
meili.api_key
);
}
}

View file

@ -13,10 +13,12 @@ use validator::Validate;
pub mod database; pub mod database;
pub mod email; pub mod email;
pub mod meili;
pub mod server; pub mod server;
use database::{DBType, Database}; use database::{DBType, Database};
use email::Email; use email::Email;
use meili::Meili;
use server::Server; use server::Server;
#[derive(Debug, Clone, Validate, Deserialize, Eq, PartialEq)] #[derive(Debug, Clone, Validate, Deserialize, Eq, PartialEq)]
@ -29,6 +31,7 @@ pub struct Settings {
pub database: Database, pub database: Database,
pub server: Server, pub server: Server,
pub email: Email, pub email: Email,
pub meili: Meili,
} }
impl Settings { impl Settings {
@ -48,6 +51,7 @@ impl Settings {
s = Database::env_override(s); s = Database::env_override(s);
s = Email::env_override(s); s = Email::env_override(s);
s = Meili::env_override(s);
Server::env_override(s) Server::env_override(s)
} }