Skip to content

Commit c375f7c

Browse files
authored
Merge pull request #11 from outof-coffee/shuttle-fixes
fix: issues with shuttle updates
2 parents 26d0d35 + 12518bd commit c375f7c

File tree

5 files changed

+32
-29
lines changed

5 files changed

+32
-29
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ Cargo.lock
33
Secrets.toml
44
.idea
55
dross-manager-frontend/.vscode/
6-
.vscode/*
6+
.vscode/*
7+
dross-manager.db

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ edition = "2021"
77

88
[dependencies]
99
axum = { version = "0.7.4", features = ["http2"] }
10-
libsql = { git = "https://github.com/tursodatabase/libsql" }
10+
#libsql = { git = "https://github.com/tursodatabase/libsql" }
11+
libsql = "0.2.0"
1112
serde = { version = "1.0.196", features = ["derive"] }
1213
shuttle-axum = { version = "0.40.0" }
1314
shuttle-runtime = "0.40.0"

src/faery.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
use std::sync::Arc;
2-
use libsql::{Row, params, Database};
2+
use libsql::{Row, params, Database, Connection};
33
use serde::{Deserialize, Serialize};
44
use tokio::sync::Mutex;
55
use crate::dross::{DrossError, DrossHolder, DrossResult};
66
use crate::repository::{Repository, RepositoryError, RepositoryItem, RepositoryResult};
77

88
#[derive(Clone)]
99
pub struct FaeryRepository {
10-
db: Arc<Mutex<Database>>,
10+
db: Arc<Mutex<Connection>>,
1111
}
1212

1313
impl FaeryRepository {
14-
pub fn new(db: Arc<Mutex<Database>>) -> FaeryRepository {
14+
pub fn new(db: Arc<Mutex<Connection>>) -> FaeryRepository {
1515
FaeryRepository {
1616
db,
1717
}
@@ -67,7 +67,7 @@ impl Repository for FaeryRepository {
6767
}
6868

6969
async fn save(&self, faery: Faery) -> RepositoryResult<i64> {
70-
let db = self.db.lock().await.connect().unwrap();
70+
let db = self.db.lock().await;
7171
let result = match faery.id {
7272
Some(id) => {
7373
let mut stmt = db.prepare("UPDATE faeries SET name = ?1, is_admin = ?2, email = ?3, dross = ?4 WHERE id = ?5").await.unwrap();
@@ -79,20 +79,20 @@ impl Repository for FaeryRepository {
7979
},
8080
};
8181
match result {
82-
Ok(_) => Ok(db.last_insert_rowid().await),
82+
Ok(_) => Ok(db.last_insert_rowid()),
8383
Err(_) => Err(RepositoryError::Other),
8484
}
8585
}
8686

8787
// Mark: Faery
8888
async fn get(&self, id: i64) -> RepositoryResult<Faery> {
89-
let db = self.db.lock().await.connect().unwrap();
89+
let db = self.db.lock().await;
9090
let mut stmt = db
9191
.prepare("SELECT * FROM faeries WHERE id = ?1")
9292
.await
9393
.unwrap();
9494
let mut res = stmt.query([id]).await.unwrap();
95-
match res.next().await.unwrap() {
95+
match res.next().unwrap() {
9696
Some(row) => {
9797
let faery = Faery::from_response(&row);
9898
Ok(faery)
@@ -102,7 +102,7 @@ impl Repository for FaeryRepository {
102102
}
103103

104104
async fn get_all(&self) -> RepositoryResult<Vec<Faery>> {
105-
let db = self.db.lock().await.connect().unwrap();
105+
let db = self.db.lock().await;
106106
let result = db.query("SELECT * FROM faeries", ()).await;
107107
let mut res = match result {
108108
Ok(res) => res,
@@ -113,7 +113,7 @@ impl Repository for FaeryRepository {
113113
};
114114

115115
let mut faeries: Vec<Faery> = Vec::new();
116-
while let Ok(result_row) = res.next().await {
116+
while let Ok(result_row) = res.next() {
117117
match result_row {
118118
Some(row) => {
119119
faeries.push(Faery::from_response(&row));
@@ -125,7 +125,7 @@ impl Repository for FaeryRepository {
125125
}
126126

127127
async fn delete(&self, id: i64) -> RepositoryResult<()> {
128-
let db = self.db.lock().await.connect().unwrap();
128+
let db = self.db.lock().await;
129129
let result = db.execute("DELETE FROM faeries WHERE id = ?1", [id]).await;
130130
match result {
131131
Ok(_) => Ok(()),
@@ -134,7 +134,7 @@ impl Repository for FaeryRepository {
134134
}
135135

136136
async fn create_table(&self) -> RepositoryResult<()> {
137-
let db = self.db.lock().await.connect().unwrap();
137+
let db = self.db.lock().await;
138138
let result = db.execute(
139139
r#"CREATE TABLE IF NOT EXISTS faeries (
140140
id INTEGER PRIMARY KEY,
@@ -150,7 +150,7 @@ impl Repository for FaeryRepository {
150150
}
151151

152152
async fn drop_table(&self) -> RepositoryResult<()> {
153-
let db = self.db.lock().await.connect().unwrap();
153+
let db = self.db.lock().await;
154154
let result = db.execute("DROP TABLE IF EXISTS faeries", ()).await;
155155
match result {
156156
Ok(_) => Ok(()),

src/main.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ mod version;
88
use std::net::SocketAddr;
99
use axum::{routing::get, Router};
1010
use tower_http::services::ServeDir;
11-
use libsql::Builder;
11+
// use libsql::Builder;
12+
use libsql::{Database, Connection};
1213
use std::sync::Arc;
1314
use tokio::sync::Mutex;
1415
use http::{Method};
@@ -32,17 +33,17 @@ async fn hello_world() -> &'static str {
3233
async fn axum(
3334
#[shuttle_secrets::Secrets] store: shuttle_secrets::SecretStore,
3435
// TODO: Remove entirely or replace with a real connection once shuttle_turso is fixed
35-
// #[shuttle_turso::Turso(
36-
// addr = "",
37-
// token = ""
38-
// )] turso: Connection
36+
#[shuttle_turso::Turso(
37+
addr = "{secrets.TURSO_URL}",
38+
token = "{secrets.TURSO_TOKEN}"
39+
)] turso: Connection
3940
) -> Result<DrossManagerService, shuttle_runtime::Error> {
4041

4142
let turso_addr = store.get("TURSO_URL").unwrap();
4243
let turso_token = store.get("TURSO_TOKEN").unwrap();
43-
let db = Builder::new_remote(turso_addr, turso_token).build().await.unwrap();
44+
// let db = Builder::new_remote(turso_addr, turso_token).build().await.unwrap();
4445

45-
let db = Arc::new(Mutex::new(db));
46+
let db = Arc::new(Mutex::new(turso));
4647
let state = Arc::new(DrossManagerState {
4748
faery_repository: Arc::new(faery::FaeryRepository::new(db.clone())),
4849
});

src/migrations.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use std::sync::Arc;
2-
use libsql::Database;
2+
use libsql::{Connection, Database};
33
use serde::{Deserialize, Serialize};
44
use crate::version::VERSION;
55
use semver::{Version, VersionReq};
@@ -113,12 +113,12 @@ impl RepositoryItem for MigrationData {
113113

114114
#[derive(Clone)]
115115
pub struct Manager {
116-
db: Arc<Mutex<Database>>,
116+
db: Arc<Mutex<Connection>>,
117117
faery_repository: Arc<FaeryRepository>,
118118
}
119119

120120
impl Manager {
121-
pub fn new(db: Arc<Mutex<Database>>, faery_repository: Arc<FaeryRepository>) -> Manager {
121+
pub fn new(db: Arc<Mutex<Connection>>, faery_repository: Arc<FaeryRepository>) -> Manager {
122122
Manager {
123123
db,
124124
faery_repository
@@ -220,7 +220,7 @@ impl Manager {
220220
match migration {
221221
Ok(_) => {
222222
log::info!("Updating Faeries database");
223-
let db = self.db.lock().await.connect().unwrap();
223+
let db = self.db.lock().await;
224224
let result = db.execute(
225225
"ALTER TABLE faeries DROP COLUMN auth_token",
226226
()
@@ -283,7 +283,7 @@ impl Repository for Manager {
283283
}
284284

285285
async fn save(&self, item: MigrationData) -> RepositoryResult<i64> {
286-
let db = self.db.lock().await.connect().unwrap();
286+
let db = self.db.lock().await;
287287
log::info!("Saving migration: {:?}", item);
288288
let insert_item = item.clone();
289289
let result = db.execute(
@@ -308,14 +308,14 @@ impl Repository for Manager {
308308
}
309309

310310
async fn get(&self, _: i64) -> RepositoryResult<MigrationData> {
311-
let db = self.db.lock().await.connect().unwrap();
311+
let db = self.db.lock().await;
312312
let result = db.query(
313313
"SELECT current_version, target_version FROM migrations WHERE id = 0",
314314
()
315315
).await;
316316
match result {
317317
Ok(mut rows) => {
318-
let result = rows.next().await;
318+
let result = rows.next();
319319
match result {
320320
Ok(Some(row)) => {
321321
let current_version: String = row.get(0).unwrap();
@@ -344,7 +344,7 @@ impl Repository for Manager {
344344
}
345345

346346
async fn create_table(&self) -> RepositoryResult<()> {
347-
let db = self.db.lock().await.connect().unwrap();
347+
let db = self.db.lock().await;
348348
let result = db.execute(
349349
"CREATE TABLE IF NOT EXISTS migrations (
350350
id INTEGER PRIMARY KEY CHECK (id = 0),

0 commit comments

Comments
 (0)