mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-01 17:15:28 +00:00
move static methods out of main db struct implementation
This commit is contained in:
parent
5b3e091f2b
commit
da33fa053e
28 changed files with 828 additions and 931 deletions
13
src/app.rs
13
src/app.rs
|
|
@ -2,7 +2,6 @@ mod browser;
|
||||||
mod database;
|
mod database;
|
||||||
|
|
||||||
use browser::Browser;
|
use browser::Browser;
|
||||||
use database::Database;
|
|
||||||
|
|
||||||
use crate::profile::Profile;
|
use crate::profile::Profile;
|
||||||
use adw::Application;
|
use adw::Application;
|
||||||
|
|
@ -51,7 +50,7 @@ impl App {
|
||||||
match connection.unchecked_transaction() {
|
match connection.unchecked_transaction() {
|
||||||
Ok(transaction) => {
|
Ok(transaction) => {
|
||||||
// Restore previous session from DB
|
// Restore previous session from DB
|
||||||
match Database::records(&transaction) {
|
match database::records(&transaction) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
// Restore child components
|
// Restore child components
|
||||||
for record in records {
|
for record in records {
|
||||||
|
|
@ -92,11 +91,11 @@ impl App {
|
||||||
// Create transaction
|
// Create transaction
|
||||||
match connection.transaction() {
|
match connection.transaction() {
|
||||||
Ok(transaction) => {
|
Ok(transaction) => {
|
||||||
match Database::records(&transaction) {
|
match database::records(&transaction) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
// Cleanup previous session records
|
// Cleanup previous session records
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(&transaction, &record.id) {
|
match database::delete(&transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to childs
|
// Delegate clean action to childs
|
||||||
if let Err(e) =
|
if let Err(e) =
|
||||||
|
|
@ -110,12 +109,12 @@ impl App {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save current session to DB
|
// Save current session to DB
|
||||||
match Database::add(&transaction) {
|
match database::add(&transaction) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
if let Err(e) = browser.save(
|
if let Err(e) = browser.save(
|
||||||
&transaction,
|
&transaction,
|
||||||
&Database::last_insert_id(&transaction),
|
&database::last_insert_id(&transaction),
|
||||||
) {
|
) {
|
||||||
todo!("{e}")
|
todo!("{e}")
|
||||||
}
|
}
|
||||||
|
|
@ -268,7 +267,7 @@ impl App {
|
||||||
// Tools
|
// Tools
|
||||||
fn migrate(tx: &Transaction) -> Result<(), String> {
|
fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ mod window;
|
||||||
|
|
||||||
use about::About;
|
use about::About;
|
||||||
use action::Action;
|
use action::Action;
|
||||||
use database::Database;
|
|
||||||
use widget::Widget;
|
use widget::Widget;
|
||||||
use window::Window;
|
use window::Window;
|
||||||
|
|
||||||
|
|
@ -101,10 +100,10 @@ impl Browser {
|
||||||
// Actions
|
// Actions
|
||||||
|
|
||||||
pub fn clean(&self, transaction: &Transaction, app_id: &i64) -> Result<(), String> {
|
pub fn clean(&self, transaction: &Transaction, app_id: &i64) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_id) {
|
match database::records(transaction, app_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to childs
|
// Delegate clean action to childs
|
||||||
self.window.clean(transaction, &record.id)?;
|
self.window.clean(transaction, &record.id)?;
|
||||||
|
|
@ -124,7 +123,7 @@ impl Browser {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn restore(&self, transaction: &Transaction, app_id: &i64) -> Result<(), String> {
|
pub fn restore(&self, transaction: &Transaction, app_id: &i64) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_id) {
|
match database::records(transaction, app_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Delegate restore action to childs
|
// Delegate restore action to childs
|
||||||
|
|
@ -142,9 +141,9 @@ impl Browser {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save(&self, transaction: &Transaction, app_id: &i64) -> Result<(), String> {
|
pub fn save(&self, transaction: &Transaction, app_id: &i64) -> Result<(), String> {
|
||||||
match Database::add(transaction, app_id) {
|
match database::add(transaction, app_id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
let id = Database::last_insert_id(transaction);
|
let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
self.widget.save(transaction, &id)?;
|
self.widget.save(transaction, &id)?;
|
||||||
|
|
@ -185,7 +184,7 @@ impl Browser {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,51 +5,45 @@ pub struct Table {
|
||||||
// pub app_id: i64, not in use
|
// pub app_id: i64, not in use
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_id` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(tx: &Transaction, app_id: &i64) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute("INSERT INTO `app_browser` (`app_id`) VALUES (?)", [app_id])
|
||||||
tx.execute(
|
}
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser`
|
|
||||||
(
|
pub fn records(tx: &Transaction, app_id: &i64) -> Result<Vec<Table>, Error> {
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
let mut stmt = tx.prepare("SELECT `id`, `app_id` FROM `app_browser` WHERE `app_id` = ?")?;
|
||||||
`app_id` INTEGER NOT NULL
|
|
||||||
)",
|
let result = stmt.query_map([app_id], |row| {
|
||||||
[],
|
Ok(Table {
|
||||||
)
|
id: row.get(0)?,
|
||||||
}
|
// app_id: row.get(1)?, not in use
|
||||||
|
})
|
||||||
pub fn add(tx: &Transaction, app_id: &i64) -> Result<usize, Error> {
|
})?;
|
||||||
tx.execute("INSERT INTO `app_browser` (`app_id`) VALUES (?)", [app_id])
|
|
||||||
}
|
let mut records = Vec::new();
|
||||||
|
|
||||||
pub fn records(tx: &Transaction, app_id: &i64) -> Result<Vec<Table>, Error> {
|
for record in result {
|
||||||
let mut stmt = tx.prepare("SELECT `id`, `app_id` FROM `app_browser` WHERE `app_id` = ?")?;
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
let result = stmt.query_map([app_id], |row| {
|
}
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
Ok(records)
|
||||||
// app_id: row.get(1)?, not in use
|
}
|
||||||
})
|
|
||||||
})?;
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
|
tx.execute("DELETE FROM `app_browser` WHERE `id` = ?", [id])
|
||||||
let mut records = Vec::new();
|
}
|
||||||
|
|
||||||
for record in result {
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
let table = record?;
|
tx.last_insert_rowid()
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute("DELETE FROM `app_browser` WHERE `id` = ?", [id])
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
mod database;
|
mod database;
|
||||||
use database::Database;
|
|
||||||
|
|
||||||
use adw::ApplicationWindow;
|
use adw::ApplicationWindow;
|
||||||
use gtk::{
|
use gtk::{
|
||||||
|
|
@ -43,10 +42,10 @@ impl Widget {
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
pub fn clean(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
pub fn clean(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_id) {
|
match database::records(transaction, app_browser_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to childs
|
// Delegate clean action to childs
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
|
|
@ -62,7 +61,7 @@ impl Widget {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn restore(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
pub fn restore(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_id) {
|
match database::records(transaction, app_browser_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Restore widget
|
// Restore widget
|
||||||
|
|
@ -81,7 +80,7 @@ impl Widget {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
pub fn save(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
||||||
match Database::add(
|
match database::add(
|
||||||
transaction,
|
transaction,
|
||||||
app_browser_id,
|
app_browser_id,
|
||||||
&self.gobject.default_width(),
|
&self.gobject.default_width(),
|
||||||
|
|
@ -108,7 +107,7 @@ impl Widget {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,83 +8,77 @@ pub struct Table {
|
||||||
pub is_maximized: bool,
|
pub is_maximized: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_widget`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_id` INTEGER NOT NULL,
|
||||||
|
`default_width` INTEGER NOT NULL,
|
||||||
|
`default_height` INTEGER NOT NULL,
|
||||||
|
`is_maximized` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx: &Transaction,
|
||||||
tx.execute(
|
app_browser_id: &i64,
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_widget`
|
default_width: &i32,
|
||||||
(
|
default_height: &i32,
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
is_maximized: &bool,
|
||||||
`app_browser_id` INTEGER NOT NULL,
|
) -> Result<usize, Error> {
|
||||||
`default_width` INTEGER NOT NULL,
|
tx.execute(
|
||||||
`default_height` INTEGER NOT NULL,
|
"INSERT INTO `app_browser_widget` (
|
||||||
`is_maximized` INTEGER NOT NULL
|
`app_browser_id`,
|
||||||
)",
|
`default_width`,
|
||||||
[],
|
`default_height`,
|
||||||
)
|
`is_maximized`
|
||||||
}
|
) VALUES (?, ?, ?, ?)",
|
||||||
|
[
|
||||||
|
app_browser_id,
|
||||||
|
&(*default_width as i64),
|
||||||
|
&(*default_height as i64),
|
||||||
|
&(*is_maximized as i64),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add(
|
pub fn records(tx: &Transaction, app_browser_id: &i64) -> Result<Vec<Table>, Error> {
|
||||||
tx: &Transaction,
|
let mut stmt = tx.prepare(
|
||||||
app_browser_id: &i64,
|
"SELECT `id`,
|
||||||
default_width: &i32,
|
|
||||||
default_height: &i32,
|
|
||||||
is_maximized: &bool,
|
|
||||||
) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"INSERT INTO `app_browser_widget` (
|
|
||||||
`app_browser_id`,
|
`app_browser_id`,
|
||||||
`default_width`,
|
`default_width`,
|
||||||
`default_height`,
|
`default_height`,
|
||||||
`is_maximized`
|
`is_maximized` FROM `app_browser_widget` WHERE `app_browser_id` = ?",
|
||||||
) VALUES (?, ?, ?, ?)",
|
)?;
|
||||||
[
|
|
||||||
app_browser_id,
|
let result = stmt.query_map([app_browser_id], |row| {
|
||||||
&(*default_width as i64),
|
Ok(Table {
|
||||||
&(*default_height as i64),
|
id: row.get(0)?,
|
||||||
&(*is_maximized as i64),
|
// app_browser_id: row.get(1)?, not in use
|
||||||
],
|
default_width: row.get(2)?,
|
||||||
)
|
default_height: row.get(3)?,
|
||||||
|
is_maximized: row.get(4)?,
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(tx: &Transaction, app_browser_id: &i64) -> Result<Vec<Table>, Error> {
|
Ok(records)
|
||||||
let mut stmt = tx.prepare(
|
|
||||||
"SELECT `id`,
|
|
||||||
`app_browser_id`,
|
|
||||||
`default_width`,
|
|
||||||
`default_height`,
|
|
||||||
`is_maximized` FROM `app_browser_widget` WHERE `app_browser_id` = ?",
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let result = stmt.query_map([app_browser_id], |row| {
|
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_id: row.get(1)?, not in use
|
|
||||||
default_width: row.get(2)?,
|
|
||||||
default_height: row.get(3)?,
|
|
||||||
is_maximized: row.get(4)?,
|
|
||||||
})
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute("DELETE FROM `app_browser_widget` WHERE `id` = ?", [id])
|
|
||||||
}
|
|
||||||
|
|
||||||
/* not in use
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
} */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
|
tx.execute("DELETE FROM `app_browser_widget` WHERE `id` = ?", [id])
|
||||||
|
}
|
||||||
|
|
||||||
|
/* not in use
|
||||||
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
|
tx.last_insert_rowid()
|
||||||
|
} */
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ mod tab;
|
||||||
mod widget;
|
mod widget;
|
||||||
|
|
||||||
use action::Action;
|
use action::Action;
|
||||||
use database::Database;
|
|
||||||
use header::Header;
|
use header::Header;
|
||||||
use sqlite::Transaction;
|
use sqlite::Transaction;
|
||||||
use tab::Tab;
|
use tab::Tab;
|
||||||
|
|
@ -107,10 +106,10 @@ impl Window {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn clean(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
pub fn clean(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_id) {
|
match database::records(transaction, app_browser_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to childs
|
// Delegate clean action to childs
|
||||||
self.tab.clean(transaction, &record.id)?;
|
self.tab.clean(transaction, &record.id)?;
|
||||||
|
|
@ -126,7 +125,7 @@ impl Window {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn restore(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
pub fn restore(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_id) {
|
match database::records(transaction, app_browser_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Delegate restore action to childs
|
// Delegate restore action to childs
|
||||||
|
|
@ -140,12 +139,12 @@ impl Window {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
pub fn save(&self, transaction: &Transaction, app_browser_id: &i64) -> Result<(), String> {
|
||||||
match Database::add(transaction, app_browser_id) {
|
match database::add(transaction, app_browser_id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
if let Err(e) = self
|
if let Err(e) = self
|
||||||
.tab
|
.tab
|
||||||
.save(transaction, &Database::last_insert_id(transaction))
|
.save(transaction, &database::last_insert_id(transaction))
|
||||||
{
|
{
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
@ -174,7 +173,7 @@ impl Window {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,58 +5,52 @@ pub struct Table {
|
||||||
// pub app_browser_id: i64, not in use
|
// pub app_browser_id: i64, not in use
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_id` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(tx: &Transaction, app_browser_id: &i64) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"INSERT INTO `app_browser_window` (`app_browser_id`) VALUES (?)",
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window`
|
[app_browser_id],
|
||||||
(
|
)
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
}
|
||||||
`app_browser_id` INTEGER NOT NULL
|
|
||||||
)",
|
pub fn records(tx: &Transaction, app_browser_id: &i64) -> Result<Vec<Table>, Error> {
|
||||||
[],
|
let mut stmt = tx.prepare(
|
||||||
)
|
"SELECT `id`,
|
||||||
}
|
`app_browser_id` FROM `app_browser_window`
|
||||||
|
WHERE `app_browser_id` = ?",
|
||||||
pub fn add(tx: &Transaction, app_browser_id: &i64) -> Result<usize, Error> {
|
)?;
|
||||||
tx.execute(
|
|
||||||
"INSERT INTO `app_browser_window` (`app_browser_id`) VALUES (?)",
|
let result = stmt.query_map([app_browser_id], |row| {
|
||||||
[app_browser_id],
|
Ok(Table {
|
||||||
)
|
id: row.get(0)?,
|
||||||
}
|
// app_browser_id: row.get(1)?, not in use
|
||||||
|
})
|
||||||
pub fn records(tx: &Transaction, app_browser_id: &i64) -> Result<Vec<Table>, Error> {
|
})?;
|
||||||
let mut stmt = tx.prepare(
|
|
||||||
"SELECT `id`,
|
let mut records = Vec::new();
|
||||||
`app_browser_id` FROM `app_browser_window`
|
|
||||||
WHERE `app_browser_id` = ?",
|
for record in result {
|
||||||
)?;
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
let result = stmt.query_map([app_browser_id], |row| {
|
}
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
Ok(records)
|
||||||
// app_browser_id: row.get(1)?, not in use
|
}
|
||||||
})
|
|
||||||
})?;
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
|
tx.execute("DELETE FROM `app_browser_window` WHERE `id` = ?", [id])
|
||||||
let mut records = Vec::new();
|
}
|
||||||
|
|
||||||
for record in result {
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
let table = record?;
|
tx.last_insert_rowid()
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute("DELETE FROM `app_browser_window` WHERE `id` = ?", [id])
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ mod item;
|
||||||
mod menu;
|
mod menu;
|
||||||
mod widget;
|
mod widget;
|
||||||
|
|
||||||
use database::Database;
|
|
||||||
use item::Item;
|
use item::Item;
|
||||||
use menu::Menu;
|
use menu::Menu;
|
||||||
use widget::Widget;
|
use widget::Widget;
|
||||||
|
|
@ -239,10 +238,10 @@ impl Tab {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_id: &i64,
|
app_browser_window_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_id) {
|
match database::records(transaction, app_browser_window_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to childs
|
// Delegate clean action to childs
|
||||||
for (_, item) in self.index.borrow().iter() {
|
for (_, item) in self.index.borrow().iter() {
|
||||||
|
|
@ -264,7 +263,7 @@ impl Tab {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_id: &i64,
|
app_browser_window_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_id) {
|
match database::records(transaction, app_browser_window_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Item::restore(
|
match Item::restore(
|
||||||
|
|
@ -297,10 +296,10 @@ impl Tab {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_id: &i64,
|
app_browser_window_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::add(transaction, app_browser_window_id) {
|
match database::add(transaction, app_browser_window_id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
let id = Database::last_insert_id(transaction);
|
let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Read collected HashMap index
|
// Read collected HashMap index
|
||||||
for (_, item) in self.index.borrow().iter() {
|
for (_, item) in self.index.borrow().iter() {
|
||||||
|
|
@ -339,7 +338,7 @@ impl Tab {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,60 +5,54 @@ pub struct Table {
|
||||||
// pub app_browser_window_id: i64, not in use
|
// pub app_browser_window_id: i64, not in use
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_id` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(tx: &Transaction, app_browser_window_id: &i64) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"INSERT INTO `app_browser_window_tab` (
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab`
|
`app_browser_window_id`
|
||||||
(
|
) VALUES (?)",
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
[app_browser_window_id],
|
||||||
`app_browser_window_id` INTEGER NOT NULL
|
)
|
||||||
)",
|
}
|
||||||
[],
|
|
||||||
)
|
pub fn records(tx: &Transaction, app_browser_window_id: &i64) -> Result<Vec<Table>, Error> {
|
||||||
}
|
let mut stmt = tx.prepare(
|
||||||
|
"SELECT `id`,
|
||||||
pub fn add(tx: &Transaction, app_browser_window_id: &i64) -> Result<usize, Error> {
|
`app_browser_window_id` FROM `app_browser_window_tab`
|
||||||
tx.execute(
|
WHERE `app_browser_window_id` = ?",
|
||||||
"INSERT INTO `app_browser_window_tab` (
|
)?;
|
||||||
`app_browser_window_id`
|
|
||||||
) VALUES (?)",
|
let result = stmt.query_map([app_browser_window_id], |row| {
|
||||||
[app_browser_window_id],
|
Ok(Table {
|
||||||
)
|
id: row.get(0)?,
|
||||||
}
|
// app_browser_window_id: row.get(1)?, not in use
|
||||||
|
})
|
||||||
pub fn records(tx: &Transaction, app_browser_window_id: &i64) -> Result<Vec<Table>, Error> {
|
})?;
|
||||||
let mut stmt = tx.prepare(
|
|
||||||
"SELECT `id`,
|
let mut records = Vec::new();
|
||||||
`app_browser_window_id` FROM `app_browser_window_tab`
|
|
||||||
WHERE `app_browser_window_id` = ?",
|
for record in result {
|
||||||
)?;
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
let result = stmt.query_map([app_browser_window_id], |row| {
|
}
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
Ok(records)
|
||||||
// app_browser_window_id: row.get(1)?, not in use
|
}
|
||||||
})
|
|
||||||
})?;
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
|
tx.execute("DELETE FROM `app_browser_window_tab` WHERE `id` = ?", [id])
|
||||||
let mut records = Vec::new();
|
}
|
||||||
|
|
||||||
for record in result {
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
let table = record?;
|
tx.last_insert_rowid()
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute("DELETE FROM `app_browser_window_tab` WHERE `id` = ?", [id])
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ mod page;
|
||||||
mod widget;
|
mod widget;
|
||||||
|
|
||||||
use action::Action;
|
use action::Action;
|
||||||
use database::Database;
|
|
||||||
use page::Page;
|
use page::Page;
|
||||||
use widget::Widget;
|
use widget::Widget;
|
||||||
|
|
||||||
|
|
@ -111,10 +110,10 @@ impl Item {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_id: &i64,
|
app_browser_window_tab_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_id) {
|
match database::records(transaction, app_browser_window_tab_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to the item childs
|
// Delegate clean action to the item childs
|
||||||
self.page.clean(transaction, &record.id)?;
|
self.page.clean(transaction, &record.id)?;
|
||||||
|
|
@ -142,7 +141,7 @@ impl Item {
|
||||||
) -> Result<Vec<Rc<Item>>, String> {
|
) -> Result<Vec<Rc<Item>>, String> {
|
||||||
let mut items = Vec::new();
|
let mut items = Vec::new();
|
||||||
|
|
||||||
match Database::records(transaction, app_browser_window_tab_id) {
|
match database::records(transaction, app_browser_window_tab_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Construct new item object
|
// Construct new item object
|
||||||
|
|
@ -185,7 +184,7 @@ impl Item {
|
||||||
is_selected: &bool,
|
is_selected: &bool,
|
||||||
is_attention: &bool,
|
is_attention: &bool,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::add(
|
match database::add(
|
||||||
transaction,
|
transaction,
|
||||||
app_browser_window_tab_id,
|
app_browser_window_tab_id,
|
||||||
page_position,
|
page_position,
|
||||||
|
|
@ -194,7 +193,7 @@ impl Item {
|
||||||
is_attention,
|
is_attention,
|
||||||
) {
|
) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
let id = Database::last_insert_id(transaction);
|
let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
self.page.save(transaction, &id)?;
|
self.page.save(transaction, &id)?;
|
||||||
|
|
@ -224,7 +223,7 @@ impl Item {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,92 +8,86 @@ pub struct Table {
|
||||||
pub is_attention: bool,
|
pub is_attention: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_tab_id` INTEGER NOT NULL,
|
||||||
|
`page_position` INTEGER NOT NULL,
|
||||||
|
`is_pinned` INTEGER NOT NULL,
|
||||||
|
`is_selected` INTEGER NOT NULL,
|
||||||
|
`is_attention` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx: &Transaction,
|
||||||
tx.execute(
|
app_browser_window_tab_id: &i64,
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item`
|
page_position: &i32,
|
||||||
(
|
is_pinned: &bool,
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
is_selected: &bool,
|
||||||
`app_browser_window_tab_id` INTEGER NOT NULL,
|
is_attention: &bool,
|
||||||
`page_position` INTEGER NOT NULL,
|
) -> Result<usize, Error> {
|
||||||
`is_pinned` INTEGER NOT NULL,
|
tx.execute(
|
||||||
`is_selected` INTEGER NOT NULL,
|
"INSERT INTO `app_browser_window_tab_item` (
|
||||||
`is_attention` INTEGER NOT NULL
|
`app_browser_window_tab_id`,
|
||||||
)",
|
`page_position`,
|
||||||
[],
|
`is_pinned`,
|
||||||
)
|
`is_selected`,
|
||||||
}
|
`is_attention`
|
||||||
|
) VALUES (?, ?, ?, ?, ?)",
|
||||||
|
[
|
||||||
|
app_browser_window_tab_id,
|
||||||
|
&(*page_position as i64),
|
||||||
|
&(*is_pinned as i64),
|
||||||
|
&(*is_selected as i64),
|
||||||
|
&(*is_attention as i64),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add(
|
pub fn records(tx: &Transaction, app_browser_window_tab_id: &i64) -> Result<Vec<Table>, Error> {
|
||||||
tx: &Transaction,
|
let mut stmt = tx.prepare(
|
||||||
app_browser_window_tab_id: &i64,
|
"SELECT `id`,
|
||||||
page_position: &i32,
|
|
||||||
is_pinned: &bool,
|
|
||||||
is_selected: &bool,
|
|
||||||
is_attention: &bool,
|
|
||||||
) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"INSERT INTO `app_browser_window_tab_item` (
|
|
||||||
`app_browser_window_tab_id`,
|
`app_browser_window_tab_id`,
|
||||||
`page_position`,
|
|
||||||
`is_pinned`,
|
`is_pinned`,
|
||||||
`is_selected`,
|
`is_selected`,
|
||||||
`is_attention`
|
`is_attention`
|
||||||
) VALUES (?, ?, ?, ?, ?)",
|
FROM `app_browser_window_tab_item`
|
||||||
[
|
WHERE `app_browser_window_tab_id` = ?
|
||||||
app_browser_window_tab_id,
|
ORDER BY `page_position` ASC", // just order by, no store in struct wanted
|
||||||
&(*page_position as i64),
|
)?;
|
||||||
&(*is_pinned as i64),
|
|
||||||
&(*is_selected as i64),
|
let result = stmt.query_map([app_browser_window_tab_id], |row| {
|
||||||
&(*is_attention as i64),
|
Ok(Table {
|
||||||
],
|
id: row.get(0)?,
|
||||||
)
|
// app_browser_window_tab_id: row.get(1)?, not in use
|
||||||
|
is_pinned: row.get(2)?,
|
||||||
|
is_selected: row.get(3)?,
|
||||||
|
is_attention: row.get(4)?,
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(tx: &Transaction, app_browser_window_tab_id: &i64) -> Result<Vec<Table>, Error> {
|
Ok(records)
|
||||||
let mut stmt = tx.prepare(
|
}
|
||||||
"SELECT `id`,
|
|
||||||
`app_browser_window_tab_id`,
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
`is_pinned`,
|
tx.execute(
|
||||||
`is_selected`,
|
"DELETE FROM `app_browser_window_tab_item` WHERE `id` = ?",
|
||||||
`is_attention`
|
[id],
|
||||||
FROM `app_browser_window_tab_item`
|
)
|
||||||
WHERE `app_browser_window_tab_id` = ?
|
}
|
||||||
ORDER BY `page_position` ASC", // just order by, no store in struct wanted
|
|
||||||
)?;
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
|
tx.last_insert_rowid()
|
||||||
let result = stmt.query_map([app_browser_window_tab_id], |row| {
|
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_window_tab_id: row.get(1)?, not in use
|
|
||||||
is_pinned: row.get(2)?,
|
|
||||||
is_selected: row.get(3)?,
|
|
||||||
is_attention: row.get(4)?,
|
|
||||||
})
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"DELETE FROM `app_browser_window_tab_item` WHERE `id` = ?",
|
|
||||||
[id],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ mod navigation;
|
||||||
mod widget;
|
mod widget;
|
||||||
|
|
||||||
use content::Content;
|
use content::Content;
|
||||||
use database::Database;
|
|
||||||
use input::Input;
|
use input::Input;
|
||||||
use meta::{Meta, Status};
|
use meta::{Meta, Status};
|
||||||
use navigation::Navigation;
|
use navigation::Navigation;
|
||||||
|
|
@ -297,10 +296,10 @@ impl Page {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_id: &i64,
|
app_browser_window_tab_item_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_item_id) {
|
match database::records(transaction, app_browser_window_tab_item_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to the item childs
|
// Delegate clean action to the item childs
|
||||||
self.meta.clean(transaction, &record.id)?;
|
self.meta.clean(transaction, &record.id)?;
|
||||||
|
|
@ -325,7 +324,7 @@ impl Page {
|
||||||
self.meta.set_status(Status::SessionRestore);
|
self.meta.set_status(Status::SessionRestore);
|
||||||
|
|
||||||
// Begin page restore
|
// Begin page restore
|
||||||
match Database::records(transaction, app_browser_window_tab_item_id) {
|
match database::records(transaction, app_browser_window_tab_item_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Delegate restore action to the item childs
|
// Delegate restore action to the item childs
|
||||||
|
|
@ -347,9 +346,9 @@ impl Page {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_id: &i64,
|
app_browser_window_tab_item_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::add(transaction, app_browser_window_tab_item_id) {
|
match database::add(transaction, app_browser_window_tab_item_id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
let id = Database::last_insert_id(transaction);
|
let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
self.meta.save(transaction, &id)?;
|
self.meta.save(transaction, &id)?;
|
||||||
|
|
@ -931,7 +930,7 @@ impl Page {
|
||||||
|
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,67 +5,61 @@ pub struct Table {
|
||||||
// pub app_browser_window_tab_item_id: i64, not in use
|
// pub app_browser_window_tab_item_id: i64, not in use
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_tab_item_id` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(tx: &Transaction, app_browser_window_tab_item_id: &i64) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"INSERT INTO `app_browser_window_tab_item_page` (
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page`
|
`app_browser_window_tab_item_id`
|
||||||
(
|
) VALUES (?)",
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
[app_browser_window_tab_item_id],
|
||||||
`app_browser_window_tab_item_id` INTEGER NOT NULL
|
)
|
||||||
)",
|
}
|
||||||
[],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add(tx: &Transaction, app_browser_window_tab_item_id: &i64) -> Result<usize, Error> {
|
pub fn records(
|
||||||
tx.execute(
|
tx: &Transaction,
|
||||||
"INSERT INTO `app_browser_window_tab_item_page` (
|
app_browser_window_tab_item_id: &i64,
|
||||||
|
) -> Result<Vec<Table>, Error> {
|
||||||
|
let mut stmt = tx.prepare(
|
||||||
|
"SELECT `id`,
|
||||||
`app_browser_window_tab_item_id`
|
`app_browser_window_tab_item_id`
|
||||||
) VALUES (?)",
|
FROM `app_browser_window_tab_item_page`
|
||||||
[app_browser_window_tab_item_id],
|
WHERE `app_browser_window_tab_item_id` = ?",
|
||||||
)
|
)?;
|
||||||
|
|
||||||
|
let result = stmt.query_map([app_browser_window_tab_item_id], |row| {
|
||||||
|
Ok(Table {
|
||||||
|
id: row.get(0)?,
|
||||||
|
// app_browser_window_tab_item_id: row.get(1)?, not in use
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(
|
Ok(records)
|
||||||
tx: &Transaction,
|
}
|
||||||
app_browser_window_tab_item_id: &i64,
|
|
||||||
) -> Result<Vec<Table>, Error> {
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
let mut stmt = tx.prepare(
|
tx.execute(
|
||||||
"SELECT `id`,
|
"DELETE FROM `app_browser_window_tab_item_page` WHERE `id` = ?",
|
||||||
`app_browser_window_tab_item_id`
|
[id],
|
||||||
FROM `app_browser_window_tab_item_page`
|
)
|
||||||
WHERE `app_browser_window_tab_item_id` = ?",
|
}
|
||||||
)?;
|
|
||||||
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
let result = stmt.query_map([app_browser_window_tab_item_id], |row| {
|
tx.last_insert_rowid()
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_window_tab_item_id: row.get(1)?, not in use
|
|
||||||
})
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"DELETE FROM `app_browser_window_tab_item_page` WHERE `id` = ?",
|
|
||||||
[id],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
mod database;
|
mod database;
|
||||||
mod redirect;
|
mod redirect;
|
||||||
|
|
||||||
use database::Database;
|
|
||||||
use redirect::Redirect;
|
use redirect::Redirect;
|
||||||
|
|
||||||
use gtk::glib::GString;
|
use gtk::glib::GString;
|
||||||
|
|
@ -112,10 +111,10 @@ impl Meta {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_page_id: &i64,
|
app_browser_window_tab_page_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_page_id) {
|
match database::records(transaction, app_browser_window_tab_page_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to the item childs
|
// Delegate clean action to the item childs
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
|
|
@ -135,7 +134,7 @@ impl Meta {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_page_id: &i64,
|
app_browser_window_tab_page_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_page_id) {
|
match database::records(transaction, app_browser_window_tab_page_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Record value can be stored as NULL
|
// Record value can be stored as NULL
|
||||||
|
|
@ -161,7 +160,7 @@ impl Meta {
|
||||||
// Keep value in memory until operation complete
|
// Keep value in memory until operation complete
|
||||||
let title = self.title();
|
let title = self.title();
|
||||||
|
|
||||||
match Database::add(
|
match database::add(
|
||||||
transaction,
|
transaction,
|
||||||
app_browser_window_tab_page_id,
|
app_browser_window_tab_page_id,
|
||||||
match title.is_empty() {
|
match title.is_empty() {
|
||||||
|
|
@ -170,7 +169,7 @@ impl Meta {
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// let id = Database::last_insert_id(transaction);
|
// let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
|
|
@ -185,7 +184,7 @@ impl Meta {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,76 +6,70 @@ pub struct Table {
|
||||||
pub title: Option<String>, // can be stored as NULL
|
pub title: Option<String>, // can be stored as NULL
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_meta`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_tab_item_page_id` INTEGER NOT NULL,
|
||||||
|
`title` VARCHAR(1024)
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx: &Transaction,
|
||||||
tx.execute(
|
app_browser_window_tab_item_page_id: &i64,
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_meta`
|
title: Option<&str>,
|
||||||
(
|
) -> Result<usize, Error> {
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
tx.execute(
|
||||||
`app_browser_window_tab_item_page_id` INTEGER NOT NULL,
|
"INSERT INTO `app_browser_window_tab_item_page_meta` (
|
||||||
`title` VARCHAR(1024)
|
`app_browser_window_tab_item_page_id`,
|
||||||
)",
|
`title`
|
||||||
[],
|
) VALUES (?, ?)",
|
||||||
)
|
(app_browser_window_tab_item_page_id, title),
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add(
|
pub fn records(
|
||||||
tx: &Transaction,
|
tx: &Transaction,
|
||||||
app_browser_window_tab_item_page_id: &i64,
|
app_browser_window_tab_item_page_id: &i64,
|
||||||
title: Option<&str>,
|
) -> Result<Vec<Table>, Error> {
|
||||||
) -> Result<usize, Error> {
|
let mut stmt = tx.prepare(
|
||||||
tx.execute(
|
"SELECT `id`,
|
||||||
"INSERT INTO `app_browser_window_tab_item_page_meta` (
|
|
||||||
`app_browser_window_tab_item_page_id`,
|
`app_browser_window_tab_item_page_id`,
|
||||||
`title`
|
`title`
|
||||||
) VALUES (?, ?)",
|
FROM `app_browser_window_tab_item_page_meta`
|
||||||
(app_browser_window_tab_item_page_id, title),
|
WHERE `app_browser_window_tab_item_page_id` = ?",
|
||||||
)
|
)?;
|
||||||
|
|
||||||
|
let result = stmt.query_map([app_browser_window_tab_item_page_id], |row| {
|
||||||
|
Ok(Table {
|
||||||
|
id: row.get(0)?,
|
||||||
|
// app_browser_window_tab_item_page_id: row.get(1)?, not in use
|
||||||
|
title: row.get(2)?,
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(
|
Ok(records)
|
||||||
tx: &Transaction,
|
|
||||||
app_browser_window_tab_item_page_id: &i64,
|
|
||||||
) -> Result<Vec<Table>, Error> {
|
|
||||||
let mut stmt = tx.prepare(
|
|
||||||
"SELECT `id`,
|
|
||||||
`app_browser_window_tab_item_page_id`,
|
|
||||||
`title`
|
|
||||||
FROM `app_browser_window_tab_item_page_meta`
|
|
||||||
WHERE `app_browser_window_tab_item_page_id` = ?",
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let result = stmt.query_map([app_browser_window_tab_item_page_id], |row| {
|
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_window_tab_item_page_id: row.get(1)?, not in use
|
|
||||||
title: row.get(2)?,
|
|
||||||
})
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"DELETE FROM `app_browser_window_tab_item_page_meta` WHERE `id` = ?",
|
|
||||||
[id],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* not in use
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
} */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
|
tx.execute(
|
||||||
|
"DELETE FROM `app_browser_window_tab_item_page_meta` WHERE `id` = ?",
|
||||||
|
[id],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* not in use
|
||||||
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
|
tx.last_insert_rowid()
|
||||||
|
} */
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ mod request;
|
||||||
mod widget;
|
mod widget;
|
||||||
|
|
||||||
use bookmark::Bookmark;
|
use bookmark::Bookmark;
|
||||||
use database::Database;
|
|
||||||
use history::History;
|
use history::History;
|
||||||
use home::Home;
|
use home::Home;
|
||||||
use reload::Reload;
|
use reload::Reload;
|
||||||
|
|
@ -79,10 +78,10 @@ impl Navigation {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_id: &i64,
|
app_browser_window_tab_item_page_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_item_page_id) {
|
match database::records(transaction, app_browser_window_tab_item_page_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to the item childs
|
// Delegate clean action to the item childs
|
||||||
self.request.clean(transaction, &record.id)?;
|
self.request.clean(transaction, &record.id)?;
|
||||||
|
|
@ -102,7 +101,7 @@ impl Navigation {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_id: &i64,
|
app_browser_window_tab_item_page_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_item_page_id) {
|
match database::records(transaction, app_browser_window_tab_item_page_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Delegate restore action to the item childs
|
// Delegate restore action to the item childs
|
||||||
|
|
@ -120,9 +119,9 @@ impl Navigation {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_id: &i64,
|
app_browser_window_tab_item_page_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::add(transaction, app_browser_window_tab_item_page_id) {
|
match database::add(transaction, app_browser_window_tab_item_page_id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
let id = Database::last_insert_id(transaction);
|
let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
self.request.save(transaction, &id)?;
|
self.request.save(transaction, &id)?;
|
||||||
|
|
@ -165,7 +164,7 @@ impl Navigation {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,70 +5,61 @@ pub struct Table {
|
||||||
// pub app_browser_window_tab_item_page_id: i64, not in use
|
// pub app_browser_window_tab_item_page_id: i64, not in use
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_navigation`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_tab_item_page_id` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(tx: &Transaction, app_browser_window_tab_item_page_id: &i64) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"INSERT INTO `app_browser_window_tab_item_page_navigation` (
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_navigation`
|
`app_browser_window_tab_item_page_id`
|
||||||
(
|
) VALUES (?)",
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
[app_browser_window_tab_item_page_id],
|
||||||
`app_browser_window_tab_item_page_id` INTEGER NOT NULL
|
)
|
||||||
)",
|
}
|
||||||
[],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add(
|
pub fn records(
|
||||||
tx: &Transaction,
|
tx: &Transaction,
|
||||||
app_browser_window_tab_item_page_id: &i64,
|
app_browser_window_tab_item_page_id: &i64,
|
||||||
) -> Result<usize, Error> {
|
) -> Result<Vec<Table>, Error> {
|
||||||
tx.execute(
|
let mut stmt = tx.prepare(
|
||||||
"INSERT INTO `app_browser_window_tab_item_page_navigation` (
|
"SELECT `id`,
|
||||||
`app_browser_window_tab_item_page_id`
|
`app_browser_window_tab_item_page_id`
|
||||||
) VALUES (?)",
|
FROM `app_browser_window_tab_item_page_navigation`
|
||||||
[app_browser_window_tab_item_page_id],
|
WHERE `app_browser_window_tab_item_page_id` = ?",
|
||||||
)
|
)?;
|
||||||
|
|
||||||
|
let result = stmt.query_map([app_browser_window_tab_item_page_id], |row| {
|
||||||
|
Ok(Table {
|
||||||
|
id: row.get(0)?,
|
||||||
|
// app_browser_window_tab_item_page_id: row.get(1)?, not in use
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(
|
Ok(records)
|
||||||
tx: &Transaction,
|
}
|
||||||
app_browser_window_tab_item_page_id: &i64,
|
|
||||||
) -> Result<Vec<Table>, Error> {
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
let mut stmt = tx.prepare(
|
tx.execute(
|
||||||
"SELECT `id`,
|
"DELETE FROM `app_browser_window_tab_item_page_navigation` WHERE `id` = ?",
|
||||||
`app_browser_window_tab_item_page_id`
|
[id],
|
||||||
FROM `app_browser_window_tab_item_page_navigation`
|
)
|
||||||
WHERE `app_browser_window_tab_item_page_id` = ?",
|
}
|
||||||
)?;
|
|
||||||
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
let result = stmt.query_map([app_browser_window_tab_item_page_id], |row| {
|
tx.last_insert_rowid()
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_window_tab_item_page_id: row.get(1)?, not in use
|
|
||||||
})
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"DELETE FROM `app_browser_window_tab_item_page_navigation` WHERE `id` = ?",
|
|
||||||
[id],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
mod database;
|
mod database;
|
||||||
mod widget;
|
mod widget;
|
||||||
|
|
||||||
use database::Database;
|
|
||||||
use widget::Widget;
|
use widget::Widget;
|
||||||
|
|
||||||
use crate::app::browser::{window::tab::item::Action as TabAction, Action as BrowserAction};
|
use crate::app::browser::{window::tab::item::Action as TabAction, Action as BrowserAction};
|
||||||
|
|
@ -39,10 +38,10 @@ impl Request {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_navigation_id: &i64,
|
app_browser_window_tab_item_page_navigation_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_item_page_navigation_id) {
|
match database::records(transaction, app_browser_window_tab_item_page_navigation_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to the item childs
|
// Delegate clean action to the item childs
|
||||||
self.widget.clean(transaction, &record.id)?;
|
self.widget.clean(transaction, &record.id)?;
|
||||||
|
|
@ -62,7 +61,7 @@ impl Request {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_navigation_id: &i64,
|
app_browser_window_tab_item_page_navigation_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_item_page_navigation_id) {
|
match database::records(transaction, app_browser_window_tab_item_page_navigation_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Delegate restore action to the item childs
|
// Delegate restore action to the item childs
|
||||||
|
|
@ -80,9 +79,9 @@ impl Request {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_navigation_id: &i64,
|
app_browser_window_tab_item_page_navigation_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::add(transaction, app_browser_window_tab_item_page_navigation_id) {
|
match database::add(transaction, app_browser_window_tab_item_page_navigation_id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
let id = Database::last_insert_id(transaction);
|
let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
self.widget.save(transaction, &id)?;
|
self.widget.save(transaction, &id)?;
|
||||||
|
|
@ -110,7 +109,7 @@ impl Request {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,70 +5,64 @@ pub struct Table {
|
||||||
// pub app_browser_window_tab_item_page_navigation_id: i64, not in use
|
// pub app_browser_window_tab_item_page_navigation_id: i64, not in use
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_navigation_request`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_tab_item_page_navigation_id` INTEGER NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx: &Transaction,
|
||||||
tx.execute(
|
app_browser_window_tab_item_page_navigation_id: &i64,
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_navigation_request`
|
) -> Result<usize, Error> {
|
||||||
(
|
tx.execute(
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
"INSERT INTO `app_browser_window_tab_item_page_navigation_request` (
|
||||||
`app_browser_window_tab_item_page_navigation_id` INTEGER NOT NULL
|
`app_browser_window_tab_item_page_navigation_id`
|
||||||
)",
|
) VALUES (?)",
|
||||||
[],
|
[app_browser_window_tab_item_page_navigation_id],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add(
|
pub fn records(
|
||||||
tx: &Transaction,
|
tx: &Transaction,
|
||||||
app_browser_window_tab_item_page_navigation_id: &i64,
|
app_browser_window_tab_item_page_navigation_id: &i64,
|
||||||
) -> Result<usize, Error> {
|
) -> Result<Vec<Table>, Error> {
|
||||||
tx.execute(
|
let mut stmt = tx.prepare(
|
||||||
"INSERT INTO `app_browser_window_tab_item_page_navigation_request` (
|
"SELECT `id`,
|
||||||
`app_browser_window_tab_item_page_navigation_id`
|
`app_browser_window_tab_item_page_navigation_id`
|
||||||
) VALUES (?)",
|
FROM `app_browser_window_tab_item_page_navigation_request`
|
||||||
[app_browser_window_tab_item_page_navigation_id],
|
WHERE `app_browser_window_tab_item_page_navigation_id` = ?",
|
||||||
)
|
)?;
|
||||||
|
|
||||||
|
let result = stmt.query_map([app_browser_window_tab_item_page_navigation_id], |row| {
|
||||||
|
Ok(Table {
|
||||||
|
id: row.get(0)?,
|
||||||
|
// app_browser_window_tab_item_page_navigation_id: row.get(1)?, not in use
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(
|
Ok(records)
|
||||||
tx: &Transaction,
|
}
|
||||||
app_browser_window_tab_item_page_navigation_id: &i64,
|
|
||||||
) -> Result<Vec<Table>, Error> {
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
let mut stmt = tx.prepare(
|
tx.execute(
|
||||||
"SELECT `id`,
|
"DELETE FROM `app_browser_window_tab_item_page_navigation_request` WHERE `id` = ?",
|
||||||
`app_browser_window_tab_item_page_navigation_id`
|
[id],
|
||||||
FROM `app_browser_window_tab_item_page_navigation_request`
|
)
|
||||||
WHERE `app_browser_window_tab_item_page_navigation_id` = ?",
|
}
|
||||||
)?;
|
|
||||||
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
let result = stmt.query_map([app_browser_window_tab_item_page_navigation_id], |row| {
|
tx.last_insert_rowid()
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_window_tab_item_page_navigation_id: row.get(1)?, not in use
|
|
||||||
})
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"DELETE FROM `app_browser_window_tab_item_page_navigation_request` WHERE `id` = ?",
|
|
||||||
[id],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
mod database;
|
mod database;
|
||||||
|
|
||||||
use database::Database;
|
|
||||||
|
|
||||||
use crate::app::browser::{window::tab::item::Action as TabAction, Action as BrowserAction};
|
use crate::app::browser::{window::tab::item::Action as TabAction, Action as BrowserAction};
|
||||||
use gtk::{
|
use gtk::{
|
||||||
glib::{timeout_add_local, ControlFlow, SourceId},
|
glib::{timeout_add_local, ControlFlow, SourceId},
|
||||||
|
|
@ -82,13 +80,13 @@ impl Widget {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(
|
match database::records(
|
||||||
transaction,
|
transaction,
|
||||||
app_browser_window_tab_item_page_navigation_request_id,
|
app_browser_window_tab_item_page_navigation_request_id,
|
||||||
) {
|
) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to the item childs
|
// Delegate clean action to the item childs
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
|
|
@ -108,7 +106,7 @@ impl Widget {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(
|
match database::records(
|
||||||
transaction,
|
transaction,
|
||||||
app_browser_window_tab_item_page_navigation_request_id,
|
app_browser_window_tab_item_page_navigation_request_id,
|
||||||
) {
|
) {
|
||||||
|
|
@ -136,7 +134,7 @@ impl Widget {
|
||||||
// Keep value in memory until operation complete
|
// Keep value in memory until operation complete
|
||||||
let text = self.gobject.text();
|
let text = self.gobject.text();
|
||||||
|
|
||||||
match Database::add(
|
match database::add(
|
||||||
transaction,
|
transaction,
|
||||||
app_browser_window_tab_item_page_navigation_request_id,
|
app_browser_window_tab_item_page_navigation_request_id,
|
||||||
match text.is_empty() {
|
match text.is_empty() {
|
||||||
|
|
@ -145,7 +143,7 @@ impl Widget {
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// let id = Database::last_insert_id(transaction);
|
// let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
|
|
@ -211,7 +209,7 @@ impl Widget {
|
||||||
// Tools
|
// Tools
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,79 +6,73 @@ pub struct Table {
|
||||||
pub text: Option<String>, // can be stored as NULL
|
pub text: Option<String>, // can be stored as NULL
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_navigation_request_widget`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_tab_item_page_navigation_request_id` INTEGER NOT NULL,
|
||||||
|
`text` VARCHAR(1024)
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx: &Transaction,
|
||||||
tx.execute(
|
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_page_navigation_request_widget`
|
text: Option<&str>,
|
||||||
(
|
) -> Result<usize, Error> {
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
tx.execute(
|
||||||
`app_browser_window_tab_item_page_navigation_request_id` INTEGER NOT NULL,
|
"INSERT INTO `app_browser_window_tab_item_page_navigation_request_widget` (
|
||||||
`text` VARCHAR(1024)
|
`app_browser_window_tab_item_page_navigation_request_id`,
|
||||||
)",
|
`text`
|
||||||
[],
|
) VALUES (?, ?)",
|
||||||
)
|
(app_browser_window_tab_item_page_navigation_request_id, text),
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add(
|
pub fn records(
|
||||||
tx: &Transaction,
|
tx: &Transaction,
|
||||||
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
||||||
text: Option<&str>,
|
) -> Result<Vec<Table>, Error> {
|
||||||
) -> Result<usize, Error> {
|
let mut stmt = tx.prepare(
|
||||||
tx.execute(
|
"SELECT `id`,
|
||||||
"INSERT INTO `app_browser_window_tab_item_page_navigation_request_widget` (
|
|
||||||
`app_browser_window_tab_item_page_navigation_request_id`,
|
`app_browser_window_tab_item_page_navigation_request_id`,
|
||||||
`text`
|
`text`
|
||||||
) VALUES (?, ?)",
|
FROM `app_browser_window_tab_item_page_navigation_request_widget`
|
||||||
(app_browser_window_tab_item_page_navigation_request_id, text),
|
WHERE `app_browser_window_tab_item_page_navigation_request_id` = ?",
|
||||||
)
|
)?;
|
||||||
|
|
||||||
|
let result = stmt.query_map(
|
||||||
|
[app_browser_window_tab_item_page_navigation_request_id],
|
||||||
|
|row| {
|
||||||
|
Ok(Table {
|
||||||
|
id: row.get(0)?,
|
||||||
|
// app_browser_window_tab_item_page_navigation_request_id: row.get(1)?, not in use
|
||||||
|
text: row.get(2)?,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(
|
Ok(records)
|
||||||
tx: &Transaction,
|
|
||||||
app_browser_window_tab_item_page_navigation_request_id: &i64,
|
|
||||||
) -> Result<Vec<Table>, Error> {
|
|
||||||
let mut stmt = tx.prepare(
|
|
||||||
"SELECT `id`,
|
|
||||||
`app_browser_window_tab_item_page_navigation_request_id`,
|
|
||||||
`text`
|
|
||||||
FROM `app_browser_window_tab_item_page_navigation_request_widget`
|
|
||||||
WHERE `app_browser_window_tab_item_page_navigation_request_id` = ?",
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let result = stmt.query_map(
|
|
||||||
[app_browser_window_tab_item_page_navigation_request_id],
|
|
||||||
|row| {
|
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_window_tab_item_page_navigation_request_id: row.get(1)?, not in use
|
|
||||||
text: row.get(2)?,
|
|
||||||
})
|
|
||||||
},
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"DELETE FROM `app_browser_window_tab_item_page_navigation_request_widget` WHERE `id` = ?",
|
|
||||||
[id],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* not in use
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
} */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
|
tx.execute(
|
||||||
|
"DELETE FROM `app_browser_window_tab_item_page_navigation_request_widget` WHERE `id` = ?",
|
||||||
|
[id],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* not in use
|
||||||
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
|
tx.last_insert_rowid()
|
||||||
|
} */
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
mod database;
|
mod database;
|
||||||
|
|
||||||
use database::Database;
|
|
||||||
|
|
||||||
use crate::app::browser::window::action::Position;
|
use crate::app::browser::window::action::Position;
|
||||||
use adw::{TabPage, TabView};
|
use adw::{TabPage, TabView};
|
||||||
use gtk::prelude::IsA;
|
use gtk::prelude::IsA;
|
||||||
|
|
@ -62,10 +60,10 @@ impl Widget {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_id: &i64,
|
app_browser_window_tab_item_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_item_id) {
|
match database::records(transaction, app_browser_window_tab_item_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
match Database::delete(transaction, &record.id) {
|
match database::delete(transaction, &record.id) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// Delegate clean action to the item childs
|
// Delegate clean action to the item childs
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
|
|
@ -85,7 +83,7 @@ impl Widget {
|
||||||
transaction: &Transaction,
|
transaction: &Transaction,
|
||||||
app_browser_window_tab_item_id: &i64,
|
app_browser_window_tab_item_id: &i64,
|
||||||
) -> Result<(), String> {
|
) -> Result<(), String> {
|
||||||
match Database::records(transaction, app_browser_window_tab_item_id) {
|
match database::records(transaction, app_browser_window_tab_item_id) {
|
||||||
Ok(records) => {
|
Ok(records) => {
|
||||||
for record in records {
|
for record in records {
|
||||||
// Record value can be stored as NULL
|
// Record value can be stored as NULL
|
||||||
|
|
@ -111,7 +109,7 @@ impl Widget {
|
||||||
// Keep value in memory until operation complete
|
// Keep value in memory until operation complete
|
||||||
let title = self.gobject.title();
|
let title = self.gobject.title();
|
||||||
|
|
||||||
match Database::add(
|
match database::add(
|
||||||
transaction,
|
transaction,
|
||||||
app_browser_window_tab_item_id,
|
app_browser_window_tab_item_id,
|
||||||
match title.is_empty() {
|
match title.is_empty() {
|
||||||
|
|
@ -120,7 +118,7 @@ impl Widget {
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
// let id = Database::last_insert_id(transaction);
|
// let id = database::last_insert_id(transaction);
|
||||||
|
|
||||||
// Delegate save action to childs
|
// Delegate save action to childs
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
|
|
@ -142,7 +140,7 @@ impl Widget {
|
||||||
|
|
||||||
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
pub fn migrate(tx: &Transaction) -> Result<(), String> {
|
||||||
// Migrate self components
|
// Migrate self components
|
||||||
if let Err(e) = Database::init(tx) {
|
if let Err(e) = database::init(tx) {
|
||||||
return Err(e.to_string());
|
return Err(e.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,76 +6,70 @@ pub struct Table {
|
||||||
pub title: Option<String>, // can be stored as NULL
|
pub title: Option<String>, // can be stored as NULL
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_widget`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
|
`app_browser_window_tab_item_id` INTEGER NOT NULL,
|
||||||
|
`title` VARCHAR(1024)
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx: &Transaction,
|
||||||
tx.execute(
|
app_browser_window_tab_item_id: &i64,
|
||||||
"CREATE TABLE IF NOT EXISTS `app_browser_window_tab_item_widget`
|
title: Option<&str>,
|
||||||
(
|
) -> Result<usize, Error> {
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
tx.execute(
|
||||||
`app_browser_window_tab_item_id` INTEGER NOT NULL,
|
"INSERT INTO `app_browser_window_tab_item_widget` (
|
||||||
`title` VARCHAR(1024)
|
`app_browser_window_tab_item_id`,
|
||||||
)",
|
`title`
|
||||||
[],
|
) VALUES (?, ?)",
|
||||||
)
|
(app_browser_window_tab_item_id, title),
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn add(
|
pub fn records(
|
||||||
tx: &Transaction,
|
tx: &Transaction,
|
||||||
app_browser_window_tab_item_id: &i64,
|
app_browser_window_tab_item_id: &i64,
|
||||||
title: Option<&str>,
|
) -> Result<Vec<Table>, Error> {
|
||||||
) -> Result<usize, Error> {
|
let mut stmt = tx.prepare(
|
||||||
tx.execute(
|
"SELECT `id`,
|
||||||
"INSERT INTO `app_browser_window_tab_item_widget` (
|
|
||||||
`app_browser_window_tab_item_id`,
|
`app_browser_window_tab_item_id`,
|
||||||
`title`
|
`title`
|
||||||
) VALUES (?, ?)",
|
FROM `app_browser_window_tab_item_widget`
|
||||||
(app_browser_window_tab_item_id, title),
|
WHERE `app_browser_window_tab_item_id` = ?",
|
||||||
)
|
)?;
|
||||||
|
|
||||||
|
let result = stmt.query_map([app_browser_window_tab_item_id], |row| {
|
||||||
|
Ok(Table {
|
||||||
|
id: row.get(0)?,
|
||||||
|
// app_browser_window_tab_item_id: row.get(1)?, not in use
|
||||||
|
title: row.get(2)?,
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
let mut records = Vec::new();
|
||||||
|
|
||||||
|
for record in result {
|
||||||
|
let table = record?;
|
||||||
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(
|
Ok(records)
|
||||||
tx: &Transaction,
|
|
||||||
app_browser_window_tab_item_id: &i64,
|
|
||||||
) -> Result<Vec<Table>, Error> {
|
|
||||||
let mut stmt = tx.prepare(
|
|
||||||
"SELECT `id`,
|
|
||||||
`app_browser_window_tab_item_id`,
|
|
||||||
`title`
|
|
||||||
FROM `app_browser_window_tab_item_widget`
|
|
||||||
WHERE `app_browser_window_tab_item_id` = ?",
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let result = stmt.query_map([app_browser_window_tab_item_id], |row| {
|
|
||||||
Ok(Table {
|
|
||||||
id: row.get(0)?,
|
|
||||||
// app_browser_window_tab_item_id: row.get(1)?, not in use
|
|
||||||
title: row.get(2)?,
|
|
||||||
})
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let mut records = Vec::new();
|
|
||||||
|
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
|
||||||
records.push(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute(
|
|
||||||
"DELETE FROM `app_browser_window_tab_item_widget` WHERE `id` = ?",
|
|
||||||
[id],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* not in use
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
} */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
|
tx.execute(
|
||||||
|
"DELETE FROM `app_browser_window_tab_item_widget` WHERE `id` = ?",
|
||||||
|
[id],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* not in use
|
||||||
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
|
tx.last_insert_rowid()
|
||||||
|
} */
|
||||||
|
|
|
||||||
|
|
@ -4,44 +4,38 @@ pub struct Table {
|
||||||
pub id: i64,
|
pub id: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Database {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
|
"CREATE TABLE IF NOT EXISTS `app`
|
||||||
|
(
|
||||||
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
|
||||||
|
)",
|
||||||
|
[],
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
pub fn add(tx: &Transaction) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute("INSERT INTO `app` DEFAULT VALUES", [])
|
||||||
tx.execute(
|
}
|
||||||
"CREATE TABLE IF NOT EXISTS `app`
|
|
||||||
(
|
pub fn records(tx: &Transaction) -> Result<Vec<Table>, Error> {
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
|
let mut stmt = tx.prepare("SELECT `id` FROM `app`")?;
|
||||||
)",
|
let result = stmt.query_map([], |row| Ok(Table { id: row.get(0)? }))?;
|
||||||
[],
|
|
||||||
)
|
let mut records = Vec::new();
|
||||||
}
|
|
||||||
|
for record in result {
|
||||||
pub fn add(tx: &Transaction) -> Result<usize, Error> {
|
let table = record?;
|
||||||
tx.execute("INSERT INTO `app` DEFAULT VALUES", [])
|
records.push(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn records(tx: &Transaction) -> Result<Vec<Table>, Error> {
|
Ok(records)
|
||||||
let mut stmt = tx.prepare("SELECT `id` FROM `app`")?;
|
}
|
||||||
let result = stmt.query_map([], |row| Ok(Table { id: row.get(0)? }))?;
|
|
||||||
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
let mut records = Vec::new();
|
tx.execute("DELETE FROM `app` WHERE `id` = ?", [id])
|
||||||
|
}
|
||||||
for record in result {
|
|
||||||
let table = record?;
|
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
||||||
records.push(table);
|
tx.last_insert_rowid()
|
||||||
}
|
|
||||||
|
|
||||||
Ok(records)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
|
||||||
tx.execute("DELETE FROM `app` WHERE `id` = ?", [id])
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn last_insert_id(tx: &Transaction) -> i64 {
|
|
||||||
tx.last_insert_rowid()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,6 @@ mod bookmark;
|
||||||
mod history;
|
mod history;
|
||||||
mod identity;
|
mod identity;
|
||||||
|
|
||||||
use bookmark::Bookmark;
|
|
||||||
use history::History;
|
|
||||||
use identity::Identity;
|
|
||||||
|
|
||||||
use sqlite::{Connection, Error};
|
use sqlite::{Connection, Error};
|
||||||
use std::{
|
use std::{
|
||||||
path::Path,
|
path::Path,
|
||||||
|
|
@ -56,9 +52,9 @@ fn init(mut connection: RwLockWriteGuard<'_, Connection>) -> Result<(), Error> {
|
||||||
let transaction = connection.transaction()?;
|
let transaction = connection.transaction()?;
|
||||||
|
|
||||||
// Init profile components
|
// Init profile components
|
||||||
Bookmark::init(&transaction)?;
|
bookmark::init(&transaction)?;
|
||||||
History::init(&transaction)?;
|
history::init(&transaction)?;
|
||||||
Identity::init(&transaction)?;
|
identity::init(&transaction)?;
|
||||||
|
|
||||||
// Apply changes
|
// Apply changes
|
||||||
transaction.commit()?;
|
transaction.commit()?;
|
||||||
|
|
|
||||||
|
|
@ -11,57 +11,55 @@ pub struct Bookmark {
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Bookmark {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"CREATE TABLE IF NOT EXISTS `bookmark`
|
||||||
"CREATE TABLE IF NOT EXISTS `bookmark`
|
(
|
||||||
(
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
`time` INTEGER NOT NULL,
|
||||||
`time` INTEGER NOT NULL,
|
`request` TEXT NOT NULL
|
||||||
`request` TEXT NOT NULL
|
)",
|
||||||
)",
|
[],
|
||||||
[],
|
)
|
||||||
)
|
}
|
||||||
}
|
|
||||||
|
pub fn add(tx: &Transaction, time: &DateTime, request: &str) -> Result<usize, Error> {
|
||||||
pub fn add(tx: &Transaction, time: &DateTime, request: &str) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"INSERT INTO `bookmark` (
|
||||||
"INSERT INTO `bookmark` (
|
`time`,
|
||||||
`time`,
|
`request`
|
||||||
`request`
|
) VALUES (?, ?)",
|
||||||
) VALUES (?, ?)",
|
(time.to_unix(), request),
|
||||||
(time.to_unix(), request),
|
)
|
||||||
)
|
}
|
||||||
}
|
|
||||||
|
pub fn records(tx: &Transaction, request: Option<&str>) -> Result<Vec<Table>, Error> {
|
||||||
pub fn records(tx: &Transaction, request: Option<&str>) -> Result<Vec<Table>, Error> {
|
let mut stmt =
|
||||||
let mut stmt =
|
tx.prepare("SELECT `id`, `time`, `request` FROM `bookmark` WHERE `request` LIKE ?")?;
|
||||||
tx.prepare("SELECT `id`, `time`, `request` FROM `bookmark` WHERE `request` LIKE ?")?;
|
|
||||||
|
let filter = match request {
|
||||||
let filter = match request {
|
Some(value) => value,
|
||||||
Some(value) => value,
|
None => "%",
|
||||||
None => "%",
|
};
|
||||||
};
|
|
||||||
|
let result = stmt.query_map([filter], |row| {
|
||||||
let result = stmt.query_map([filter], |row| {
|
Ok(Table {
|
||||||
Ok(Table {
|
id: row.get(0)?,
|
||||||
id: row.get(0)?,
|
time: DateTime::from_unix_local(row.get(1)?).unwrap(),
|
||||||
time: DateTime::from_unix_local(row.get(1)?).unwrap(),
|
request: row.get(2)?,
|
||||||
request: row.get(2)?,
|
})
|
||||||
})
|
})?;
|
||||||
})?;
|
|
||||||
|
let mut records = Vec::new();
|
||||||
let mut records = Vec::new();
|
|
||||||
|
for record in result {
|
||||||
for record in result {
|
let table = record?;
|
||||||
let table = record?;
|
records.push(table);
|
||||||
records.push(table);
|
}
|
||||||
}
|
|
||||||
|
Ok(records)
|
||||||
Ok(records)
|
}
|
||||||
}
|
|
||||||
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
tx.execute("DELETE FROM `bookmark` WHERE `id` = ?", [id])
|
||||||
tx.execute("DELETE FROM `bookmark` WHERE `id` = ?", [id])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,57 +11,55 @@ pub struct History {
|
||||||
// nothing yet..
|
// nothing yet..
|
||||||
}
|
}
|
||||||
|
|
||||||
impl History {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"CREATE TABLE IF NOT EXISTS `history`
|
||||||
"CREATE TABLE IF NOT EXISTS `history`
|
(
|
||||||
(
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
`time` INTEGER NOT NULL,
|
||||||
`time` INTEGER NOT NULL,
|
`request` TEXT NOT NULL
|
||||||
`request` TEXT NOT NULL
|
)",
|
||||||
)",
|
[],
|
||||||
[],
|
)
|
||||||
)
|
}
|
||||||
}
|
|
||||||
|
pub fn add(tx: &Transaction, time: &DateTime, request: &str) -> Result<usize, Error> {
|
||||||
pub fn add(tx: &Transaction, time: &DateTime, request: &str) -> Result<usize, Error> {
|
tx.execute(
|
||||||
tx.execute(
|
"INSERT INTO `history` (
|
||||||
"INSERT INTO `history` (
|
`time`,
|
||||||
`time`,
|
`request`
|
||||||
`request`
|
) VALUES (?, ?)",
|
||||||
) VALUES (?, ?)",
|
(time.to_unix(), request),
|
||||||
(time.to_unix(), request),
|
)
|
||||||
)
|
}
|
||||||
}
|
|
||||||
|
pub fn records(tx: &Transaction, request: Option<&str>) -> Result<Vec<Table>, Error> {
|
||||||
pub fn records(tx: &Transaction, request: Option<&str>) -> Result<Vec<Table>, Error> {
|
let mut stmt =
|
||||||
let mut stmt =
|
tx.prepare("SELECT `id`, `time`, `request` FROM `history` WHERE `request` LIKE ?")?;
|
||||||
tx.prepare("SELECT `id`, `time`, `request` FROM `history` WHERE `request` LIKE ?")?;
|
|
||||||
|
let filter = match request {
|
||||||
let filter = match request {
|
Some(value) => value,
|
||||||
Some(value) => value,
|
None => "%",
|
||||||
None => "%",
|
};
|
||||||
};
|
|
||||||
|
let result = stmt.query_map([filter], |row| {
|
||||||
let result = stmt.query_map([filter], |row| {
|
Ok(Table {
|
||||||
Ok(Table {
|
id: row.get(0)?,
|
||||||
id: row.get(0)?,
|
time: DateTime::from_unix_local(row.get(1)?).unwrap(),
|
||||||
time: DateTime::from_unix_local(row.get(1)?).unwrap(),
|
request: row.get(2)?,
|
||||||
request: row.get(2)?,
|
})
|
||||||
})
|
})?;
|
||||||
})?;
|
|
||||||
|
let mut records = Vec::new();
|
||||||
let mut records = Vec::new();
|
|
||||||
|
for record in result {
|
||||||
for record in result {
|
let table = record?;
|
||||||
let table = record?;
|
records.push(table);
|
||||||
records.push(table);
|
}
|
||||||
}
|
|
||||||
|
Ok(records)
|
||||||
Ok(records)
|
}
|
||||||
}
|
|
||||||
|
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
||||||
pub fn delete(tx: &Transaction, id: &i64) -> Result<usize, Error> {
|
tx.execute("DELETE FROM `history` WHERE `id` = ?", [id])
|
||||||
tx.execute("DELETE FROM `history` WHERE `id` = ?", [id])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,25 +2,19 @@ use sqlite::{Error, Transaction};
|
||||||
|
|
||||||
pub struct Table {
|
pub struct Table {
|
||||||
pub id: i64,
|
pub id: i64,
|
||||||
// pub app_id: i64, not in use
|
// pub app_id: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Identity {
|
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
||||||
// nothing yet..
|
tx.execute(
|
||||||
}
|
"CREATE TABLE IF NOT EXISTS `identity`
|
||||||
|
(
|
||||||
impl Identity {
|
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||||
pub fn init(tx: &Transaction) -> Result<usize, Error> {
|
`time` INTEGER NOT NULL,
|
||||||
tx.execute(
|
`name` VARCHAR(255),
|
||||||
"CREATE TABLE IF NOT EXISTS `identity`
|
`crt` TEXT NOT NULL,
|
||||||
(
|
`key` TEXT NOT NULL
|
||||||
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
)",
|
||||||
`time` INTEGER NOT NULL,
|
[],
|
||||||
`name` VARCHAR(255),
|
)
|
||||||
`crt` TEXT NOT NULL,
|
|
||||||
`key` TEXT NOT NULL
|
|
||||||
)",
|
|
||||||
[],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue