start on db module

This commit is contained in:
joe 2026-01-13 20:59:14 -08:00
parent 8cc7c4eaa2
commit b8140d49d5
4 changed files with 174 additions and 60 deletions

199
Cargo.lock generated
View file

@ -88,7 +88,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
dependencies = [
"cfg-if",
"getrandom",
"getrandom 0.3.4",
"once_cell",
"version_check",
"zerocopy",
@ -334,7 +334,10 @@ name = "autobats"
version = "0.1.0"
dependencies = [
"bevy",
"dirs",
"include_dir",
"rusqlite",
"rusqlite_migration",
"steel-core",
]
@ -1812,9 +1815,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "chrono"
version = "0.4.42"
version = "0.4.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
dependencies = [
"iana-time-zone",
"num-traits",
@ -2229,6 +2232,27 @@ dependencies = [
"crypto-common",
]
[[package]]
name = "dirs"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
dependencies = [
"dirs-sys",
]
[[package]]
name = "dirs-sys"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
dependencies = [
"libc",
"option-ext",
"redox_users",
"windows-sys 0.61.2",
]
[[package]]
name = "dispatch"
version = "0.2.0"
@ -2633,6 +2657,17 @@ dependencies = [
"windows-link 0.2.1",
]
[[package]]
name = "getrandom"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "getrandom"
version = "0.3.4"
@ -2871,6 +2906,15 @@ dependencies = [
"serde_core",
]
[[package]]
name = "hashlink"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
dependencies = [
"hashbrown 0.15.5",
]
[[package]]
name = "heapless"
version = "0.9.2"
@ -3024,9 +3068,9 @@ dependencies = [
[[package]]
name = "im-lists"
version = "0.11.0"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "952b35313cb20214b270aa12e6d144270cc1c44d29caf207565f2cbeb926db9d"
checksum = "f5a4cae9e7ec36f263968ca5ae4b9fd7d8d108d8ca6a4915481f526f7fa9c787"
dependencies = [
"generic_singleton",
"smallvec",
@ -3060,6 +3104,25 @@ dependencies = [
"png",
]
[[package]]
name = "include_dir"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd"
dependencies = [
"include_dir_macros",
]
[[package]]
name = "include_dir_macros"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75"
dependencies = [
"proc-macro2",
"quote",
]
[[package]]
name = "indexmap"
version = "1.9.3"
@ -3137,24 +3200,22 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
[[package]]
name = "jiff"
version = "0.2.15"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49"
checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50"
dependencies = [
"jiff-static",
"js-sys",
"log",
"portable-atomic",
"portable-atomic-util",
"serde",
"wasm-bindgen",
"serde_core",
]
[[package]]
name = "jiff-static"
version = "0.2.15"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4"
checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78"
dependencies = [
"proc-macro2",
"quote",
@ -3189,15 +3250,15 @@ version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
dependencies = [
"getrandom",
"getrandom 0.3.4",
"libc",
]
[[package]]
name = "js-sys"
version = "0.3.83"
version = "0.3.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
dependencies = [
"once_cell",
"wasm-bindgen",
@ -3284,9 +3345,9 @@ dependencies = [
[[package]]
name = "libsqlite3-sys"
version = "0.36.0"
version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95b4103cffefa72eb8428cb6b47d6627161e51c2739fc5e3b734584157bc642a"
checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f"
dependencies = [
"cc",
"pkg-config",
@ -3947,6 +4008,12 @@ version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "option-ext"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "orbclient"
version = "0.3.50"
@ -4261,7 +4328,7 @@ version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
dependencies = [
"getrandom",
"getrandom 0.3.4",
]
[[package]]
@ -4355,6 +4422,17 @@ dependencies = [
"bitflags 2.10.0",
]
[[package]]
name = "redox_users"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
dependencies = [
"getrandom 0.2.17",
"libredox",
"thiserror 2.0.17",
]
[[package]]
name = "regex"
version = "1.12.2"
@ -4422,17 +4500,28 @@ checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
[[package]]
name = "rusqlite"
version = "0.38.0"
version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1c93dd1c9683b438c392c492109cb702b8090b2bfc8fed6f6e4eb4523f17af3"
checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f"
dependencies = [
"bitflags 2.10.0",
"fallible-iterator",
"fallible-streaming-iterator",
"hashlink",
"jiff",
"libsqlite3-sys",
"smallvec",
"sqlite-wasm-rs",
]
[[package]]
name = "rusqlite_migration"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fc9767ae49274bafd3e55be9d30405a033b7a59548327d87fd4971fbb58e264"
dependencies = [
"include_dir",
"log",
"rusqlite",
]
[[package]]
@ -4722,19 +4811,6 @@ dependencies = [
"bitflags 2.10.0",
]
[[package]]
name = "sqlite-wasm-rs"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05e98301bf8b0540c7de45ecd760539b9c62f5772aed172f08efba597c11cd5d"
dependencies = [
"cc",
"hashbrown 0.16.1",
"js-sys",
"thiserror 2.0.17",
"wasm-bindgen",
]
[[package]]
name = "stable_deref_trait"
version = "1.2.1"
@ -4759,7 +4835,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "steel-core"
version = "0.7.0"
source = "git+https://github.com/mattwparas/steel.git?branch=master#d0e22af27361612366b15f4436ad133aa770f872"
source = "git+https://github.com/mattwparas/steel.git?branch=master#dd5980a4099afe2af9ce1ae3d8bb30b981294398"
dependencies = [
"arc-swap",
"bigdecimal",
@ -4774,7 +4850,7 @@ dependencies = [
"futures-executor",
"futures-task",
"futures-util",
"getrandom",
"getrandom 0.3.4",
"glob",
"httparse",
"icu_casemap",
@ -4809,7 +4885,7 @@ dependencies = [
[[package]]
name = "steel-derive"
version = "0.6.0"
source = "git+https://github.com/mattwparas/steel.git?branch=master#d0e22af27361612366b15f4436ad133aa770f872"
source = "git+https://github.com/mattwparas/steel.git?branch=master#dd5980a4099afe2af9ce1ae3d8bb30b981294398"
dependencies = [
"proc-macro2",
"quote",
@ -4819,7 +4895,7 @@ dependencies = [
[[package]]
name = "steel-gen"
version = "0.3.0"
source = "git+https://github.com/mattwparas/steel.git?branch=master#d0e22af27361612366b15f4436ad133aa770f872"
source = "git+https://github.com/mattwparas/steel.git?branch=master#dd5980a4099afe2af9ce1ae3d8bb30b981294398"
dependencies = [
"codegen",
"serde",
@ -4828,7 +4904,7 @@ dependencies = [
[[package]]
name = "steel-parser"
version = "0.7.0"
source = "git+https://github.com/mattwparas/steel.git?branch=master#d0e22af27361612366b15f4436ad133aa770f872"
source = "git+https://github.com/mattwparas/steel.git?branch=master#dd5980a4099afe2af9ce1ae3d8bb30b981294398"
dependencies = [
"compact_str",
"lasso",
@ -4846,7 +4922,7 @@ dependencies = [
[[package]]
name = "steel-quickscope"
version = "0.2.0"
source = "git+https://github.com/mattwparas/steel.git?branch=master#d0e22af27361612366b15f4436ad133aa770f872"
source = "git+https://github.com/mattwparas/steel.git?branch=master#dd5980a4099afe2af9ce1ae3d8bb30b981294398"
dependencies = [
"indexmap 2.13.0",
"smallvec",
@ -5248,7 +5324,7 @@ version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a"
dependencies = [
"getrandom",
"getrandom 0.3.4",
"js-sys",
"serde_core",
"wasm-bindgen",
@ -5300,19 +5376,25 @@ dependencies = [
]
[[package]]
name = "wasip2"
version = "1.0.1+wasi-0.2.4"
name = "wasi"
version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
name = "wasip2"
version = "1.0.2+wasi-0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
dependencies = [
"wit-bindgen",
]
[[package]]
name = "wasm-bindgen"
version = "0.2.106"
version = "0.2.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
dependencies = [
"cfg-if",
"once_cell",
@ -5323,11 +5405,12 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.56"
version = "0.4.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f"
dependencies = [
"cfg-if",
"futures-util",
"js-sys",
"once_cell",
"wasm-bindgen",
@ -5336,9 +5419,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.106"
version = "0.2.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@ -5346,9 +5429,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.106"
version = "0.2.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
dependencies = [
"bumpalo",
"proc-macro2",
@ -5359,9 +5442,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.106"
version = "0.2.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
dependencies = [
"unicode-ident",
]
@ -5482,9 +5565,9 @@ checksum = "323f4da9523e9a669e1eaf9c6e763892769b1d38c623913647bfdc1532fe4549"
[[package]]
name = "web-sys"
version = "0.3.83"
version = "0.3.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598"
dependencies = [
"js-sys",
"wasm-bindgen",
@ -6210,9 +6293,9 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
[[package]]
name = "wit-bindgen"
version = "0.46.0"
version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
[[package]]
name = "writeable"

View file

@ -5,7 +5,10 @@ edition = "2024"
[dependencies]
bevy = { version = "0.18", default-features = false, features = ["2d"] }
rusqlite = { version = "0.38", default-features = false, features = ["bundled", "blob", "functions", "jiff"] }
dirs = "6.0.0"
include_dir = "0.7.4"
rusqlite = { version = "0.37", default-features = false, features = ["bundled", "blob", "functions", "jiff"] }
rusqlite_migration = { version = "2.3.0", features = ["from-directory"] }
steel-core = { git="https://github.com/mattwparas/steel.git", branch = "master" }
# Enable a small amount of optimization in the dev profile.

27
src/db.rs Normal file
View file

@ -0,0 +1,27 @@
use std::{path::PathBuf, sync::LazyLock};
use include_dir::{include_dir, Dir};
use rusqlite::{params, Connection};
use rusqlite_migration::Migrations;
static MIGRATIONS_DIR: Dir = include_dir!("$CARGO_MANIFEST_DIR/migrations");
static MIGRATIONS: LazyLock<Migrations<'static>> =
LazyLock::new(|| Migrations::from_directory(&MIGRATIONS_DIR).unwrap());
static ASSETS_DB: LazyLock<PathBuf> = LazyLock::new(|| {
dirs::data_dir()
.unwrap_or(".".into())
.join("autobarts")
.join("assets.db")
});
pub fn init_db() -> Result<Connection, String> {
let mut conn = Connection::open(&*ASSETS_DB).map_err(|e| format!("oh shit: {e}"))?;
MIGRATIONS
.to_latest(&mut conn)
.map_err(|e| format!("oh shit: {e}"))?;
Ok(conn)
}

View file

@ -1,7 +1,8 @@
//! Renders a 2D scene containing a single, moving sprite.
use bevy::prelude::*;
mod db;
fn main() {
App::new()
.add_plugins(DefaultPlugins)