// yt - A fully featured command line YouTube client // // Copyright (C) 2024 Benedikt Peetz // SPDX-License-Identifier: GPL-3.0-or-later // // This file is part of Yt. // // You should have received a copy of the License along with this program. // If not, see . use std::path::PathBuf; use anyhow::{Context, Result}; use sqlx::{query, sqlite::SqliteConnectOptions, SqlitePool}; pub struct App { pub database: SqlitePool, } impl App { pub async fn new(db_name: PathBuf) -> Result { let options = SqliteConnectOptions::new() .filename(db_name) .optimize_on_close(true, None) .create_if_missing(true); let pool = SqlitePool::connect_with(options) .await .context("Failed to connect to database!")?; query(include_str!("storage/video_database/schema.sql")) .execute(&pool) .await?; Ok(App { database: pool }) } }