Read chatgpt and postgresql credentials from .env
This commit is contained in:
parent
832bdf6e92
commit
c2899951f6
|
@ -0,0 +1,2 @@
|
|||
CHAT_GPT_API_KEY="fake-chat-gpt-key"
|
||||
DATABASE_URL="postgres://postgres:password@localhost/nederlandskie"
|
|
@ -1 +1,2 @@
|
|||
/target
|
||||
.env
|
||||
|
|
|
@ -481,6 +481,12 @@ dependencies = [
|
|||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dotenv"
|
||||
version = "0.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
|
||||
|
||||
[[package]]
|
||||
name = "dotenvy"
|
||||
version = "0.15.7"
|
||||
|
@ -1239,6 +1245,7 @@ dependencies = [
|
|||
"chat-gpt-lib-rs",
|
||||
"chrono",
|
||||
"ciborium",
|
||||
"dotenv",
|
||||
"futures",
|
||||
"libipld-core",
|
||||
"rs-car",
|
||||
|
|
|
@ -13,6 +13,7 @@ atrium-xrpc = "0.4.0"
|
|||
chat-gpt-lib-rs = "0.2.1"
|
||||
chrono = "0.4.29"
|
||||
ciborium = "0.2.1"
|
||||
dotenv = "0.15.0"
|
||||
futures = "0.3.28"
|
||||
libipld-core = { version = "0.16.0", features = ["serde-codec"] }
|
||||
rs-car = "0.4.1"
|
||||
|
|
|
@ -15,6 +15,13 @@ Heavily WIP. Doesn't work yet at all, but does read the stream of posts as they
|
|||
- [ ] Publish the feed
|
||||
- [ ] Handle deleting of posts
|
||||
|
||||
## Initial setup
|
||||
|
||||
Copy `.env.example` into `.env` and set up the environment variables within:
|
||||
|
||||
- `CHAT_GPT_API_KEY` for your ChatGPT key
|
||||
- `DATABASE_URL` for PostgreSQL credentials
|
||||
|
||||
## Running
|
||||
|
||||
`cargo run`
|
||||
|
|
27
src/main.rs
27
src/main.rs
|
@ -1,7 +1,10 @@
|
|||
mod processes;
|
||||
mod services;
|
||||
|
||||
use std::env;
|
||||
|
||||
use anyhow::Result;
|
||||
use dotenv::dotenv;
|
||||
|
||||
use crate::processes::post_saver::PostSaver;
|
||||
use crate::processes::profile_classifier::ProfileClassifier;
|
||||
|
@ -9,13 +12,29 @@ use crate::services::ai::AI;
|
|||
use crate::services::bluesky::Bluesky;
|
||||
use crate::services::database::Database;
|
||||
|
||||
struct Config {
|
||||
chat_gpt_api_key: String,
|
||||
database_url: String,
|
||||
}
|
||||
|
||||
impl Config {
|
||||
fn load() -> Result<Self> {
|
||||
dotenv()?;
|
||||
|
||||
Ok(Self {
|
||||
chat_gpt_api_key: env::var("CHAT_GPT_API_KEY")?,
|
||||
database_url: env::var("DATABASE_URL")?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<()> {
|
||||
// TODO: Use env vars
|
||||
let ai = AI::new("fake-api-key", "https://api.openai.com");
|
||||
let config = Config::load()?;
|
||||
|
||||
let ai = AI::new(&config.chat_gpt_api_key, "https://api.openai.com");
|
||||
let bluesky = Bluesky::new("https://bsky.social");
|
||||
let database =
|
||||
Database::connect("postgres://postgres:password@localhost/nederlandskie").await?;
|
||||
let database = Database::connect(&config.database_url).await?;
|
||||
|
||||
let post_saver = PostSaver::new(&database, &bluesky);
|
||||
let profile_classifier = ProfileClassifier::new(&database, &ai, &bluesky);
|
||||
|
|
Loading…
Reference in New Issue