diff --git a/migrations/001/init.up.sql b/migrations/001/init.up.sql new file mode 100644 index 0000000..e69de29 diff --git a/src/db.rs b/src/db.rs index f92203e..db9dfad 100644 --- a/src/db.rs +++ b/src/db.rs @@ -1,7 +1,7 @@ use std::{path::PathBuf, sync::LazyLock}; use include_dir::{include_dir, Dir}; -use rusqlite::{params, Connection}; +use rusqlite::{config::DbConfig, params, Connection}; use rusqlite_migration::Migrations; static MIGRATIONS_DIR: Dir = include_dir!("$CARGO_MANIFEST_DIR/migrations"); @@ -10,15 +10,20 @@ static MIGRATIONS: LazyLock> = LazyLock::new(|| Migrations::from_directory(&MIGRATIONS_DIR).unwrap()); static ASSETS_DB: LazyLock = LazyLock::new(|| { - dirs::data_dir() - .unwrap_or(".".into()) - .join("autobarts") - .join("assets.db") + let d = dirs::data_dir().unwrap_or(".".into()).join("autobarts"); + std::fs::create_dir_all(&d) + .unwrap_or_else(|e| panic!("could not create autobarts data dir {d:?}: {e}")); + d.join("assets.db") }); pub fn init_db() -> Result { let mut conn = Connection::open(&*ASSETS_DB).map_err(|e| format!("oh shit: {e}"))?; + conn.set_db_config(DbConfig::SQLITE_DBCONFIG_ENABLE_FKEY, true) + .map_err(|e| format!("oh shit: {e}"))?; + + let _ = conn.pragma_update(None, "journal_mode", "WAL"); + MIGRATIONS .to_latest(&mut conn) .map_err(|e| format!("oh shit: {e}"))?; diff --git a/src/main.rs b/src/main.rs index 1a5d28d..1a5124f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ //! Renders a 2D scene containing a single, moving sprite. use bevy::prelude::*; +use db::init_db; mod db; @@ -18,6 +19,7 @@ enum Direction { } fn setup(mut commands: Commands, asset_server: Res) { + let conn = init_db().unwrap(); commands.spawn(Camera2d); commands.spawn(( @@ -30,7 +32,7 @@ fn setup(mut commands: Commands, asset_server: Res) { image_mode: SpriteImageMode::Tiled { tile_x: true, tile_y: true, - stretch_value: 0.5, // The image will tile every 128px + stretch_value: 1.0, // The image will tile every 128px }, custom_size: Some(Vec2::splat(2048.0)), ..default()