mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-02-10 18:34:14 +00:00
move profile filesystem dependencies init on the main level
This commit is contained in:
parent
b60ac5fb3f
commit
e8680cb052
30
src/app.rs
30
src/app.rs
@ -7,12 +7,13 @@ use browser::Browser;
|
|||||||
use database::Database;
|
use database::Database;
|
||||||
|
|
||||||
use gtk::{
|
use gtk::{
|
||||||
glib::{user_config_dir, ExitCode},
|
glib::ExitCode,
|
||||||
prelude::{ActionExt, ApplicationExt, ApplicationExtManual, GtkApplicationExt, GtkWindowExt},
|
prelude::{ActionExt, ApplicationExt, ApplicationExtManual, GtkApplicationExt, GtkWindowExt},
|
||||||
Application,
|
Application,
|
||||||
};
|
};
|
||||||
|
use sqlite::Connection;
|
||||||
|
|
||||||
use std::{fs::create_dir_all, sync::Arc};
|
use std::sync::Arc;
|
||||||
|
|
||||||
const APPLICATION_ID: &str = "io.github.yggverse.Yoda";
|
const APPLICATION_ID: &str = "io.github.yggverse.Yoda";
|
||||||
|
|
||||||
@ -26,28 +27,9 @@ pub struct App {
|
|||||||
|
|
||||||
impl App {
|
impl App {
|
||||||
// Construct
|
// Construct
|
||||||
pub fn new() -> Self {
|
pub fn new(profile_database_connection: Arc<Connection>) -> Self {
|
||||||
// Init profile directory path
|
// Init app database model
|
||||||
let mut profile_path = user_config_dir();
|
let database = Arc::new(Database::init(profile_database_connection));
|
||||||
|
|
||||||
profile_path.push(APPLICATION_ID);
|
|
||||||
|
|
||||||
if let Err(e) = create_dir_all(&profile_path) {
|
|
||||||
panic!("Failed to create profile directory: {e}")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Init profile database path
|
|
||||||
let mut database_path = profile_path.clone();
|
|
||||||
|
|
||||||
database_path.push("database.sqlite3");
|
|
||||||
|
|
||||||
let connection = match sqlite::open(database_path) {
|
|
||||||
Ok(connection) => Arc::new(connection),
|
|
||||||
Err(e) => panic!("Failed to connect profile database: {e}"),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Init database model
|
|
||||||
let database = Arc::new(Database::init(connection));
|
|
||||||
|
|
||||||
// Init actions
|
// Init actions
|
||||||
let action_debug = Action::new("win", true);
|
let action_debug = Action::new("win", true);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use sqlite::Connection;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
pub struct Database {
|
pub struct Database {
|
||||||
@ -6,18 +7,18 @@ pub struct Database {
|
|||||||
|
|
||||||
impl Database {
|
impl Database {
|
||||||
// Construct new application DB
|
// Construct new application DB
|
||||||
pub fn init(connection: Arc<sqlite::Connection>) -> Database {
|
pub fn init(connection: Arc<Connection>) -> Database {
|
||||||
// Init app table
|
// Init app table
|
||||||
if let Err(e) = connection.execute(
|
if let Err(error) = connection.execute(
|
||||||
r"
|
r"
|
||||||
CREATE TABLE IF NOT EXISTS `app`
|
CREATE TABLE IF NOT EXISTS `app`
|
||||||
(
|
(
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
`time` INTEGER NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
`time` INTEGER NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
)
|
)
|
||||||
",
|
",
|
||||||
) {
|
) {
|
||||||
panic!("{e}");
|
panic!("{error}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return struct
|
// Return struct
|
||||||
|
26
src/main.rs
26
src/main.rs
@ -1,8 +1,30 @@
|
|||||||
mod app;
|
mod app;
|
||||||
|
|
||||||
use app::App;
|
use app::App;
|
||||||
use gtk::glib::ExitCode;
|
use gtk::glib::{user_config_dir, ExitCode};
|
||||||
|
use std::{fs::create_dir_all, sync::Arc};
|
||||||
|
|
||||||
fn main() -> ExitCode {
|
fn main() -> ExitCode {
|
||||||
App::new().run()
|
// Init profile path
|
||||||
|
let mut profile_path = user_config_dir();
|
||||||
|
|
||||||
|
profile_path.push(env!("CARGO_PKG_NAME"));
|
||||||
|
|
||||||
|
if let Err(error) = create_dir_all(&profile_path) {
|
||||||
|
panic!("Failed to create profile directory: {error}")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init profile database path
|
||||||
|
let mut profile_database_path = profile_path.clone();
|
||||||
|
|
||||||
|
profile_database_path.push("database.sqlite3");
|
||||||
|
|
||||||
|
// Init database connection
|
||||||
|
let profile_database_connection = match sqlite::open(profile_database_path) {
|
||||||
|
Ok(profile_database_connection) => Arc::new(profile_database_connection),
|
||||||
|
Err(error) => panic!("Failed to connect profile database: {error}"),
|
||||||
|
};
|
||||||
|
|
||||||
|
// Start application
|
||||||
|
App::new(profile_database_connection).run()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user