Skip to content

Commit a1d562f

Browse files
committed
Remove the Done trait
1 parent fd0101a commit a1d562f

File tree

19 files changed

+23
-63
lines changed

19 files changed

+23
-63
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020
- [[#940]] Rename the `#[sqlx(rename)]` attribute used to specify the type name on the database
2121
side to `#[sqlx(type_name)]` [[@jplatte]].
2222

23+
- [[#976]] Remove the `Done` trait. The `.rows_affected()` method is now available as an inherent
24+
method on `PgDone`, `MySqlDone` and so on.
25+
2326
## 0.4.2 - 2020-12-19
2427

2528
- [[#908]] Fix `whoami` crash on FreeBSD platform [[@fundon]] [[@AldaronLau]]

examples/mysql/todos/src/main.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use sqlx::mysql::MySqlPool;
2-
use sqlx::Done;
32
use std::env;
43
use structopt::StructOpt;
54

examples/postgres/mockable-todos/src/main.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use async_trait::async_trait;
22
use dotenv;
33
use sqlx::postgres::PgPool;
4-
use sqlx::Done;
54
use std::{env, io::Write, sync::Arc};
65
use structopt::StructOpt;
76

examples/postgres/todos/src/main.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use sqlx::postgres::PgPool;
2-
use sqlx::Done;
32
use std::env;
43
use structopt::StructOpt;
54

examples/sqlite/todos/src/main.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use sqlx::sqlite::SqlitePool;
2-
use sqlx::Done;
32
use std::env;
43
use structopt::StructOpt;
54

sqlx-core/src/any/done.rs

+4-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use crate::any::Any;
2-
use crate::done::Done;
31
use std::iter::{Extend, IntoIterator};
42

53
#[derive(Debug, Default)]
@@ -9,16 +7,12 @@ pub struct AnyDone {
97
}
108

119
impl AnyDone {
12-
pub fn last_insert_id(&self) -> Option<i64> {
13-
self.last_insert_id
10+
pub fn rows_affected(&self) -> u64 {
11+
self.rows_affected
1412
}
15-
}
1613

17-
impl Done for AnyDone {
18-
type Database = Any;
19-
20-
fn rows_affected(&self) -> u64 {
21-
self.rows_affected
14+
pub fn last_insert_id(&self) -> Option<i64> {
15+
self.last_insert_id
2216
}
2317
}
2418

sqlx-core/src/database.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ use std::fmt::Debug;
5858
use crate::arguments::Arguments;
5959
use crate::column::Column;
6060
use crate::connection::Connection;
61-
use crate::done::Done;
6261
use crate::row::Row;
6362
use crate::statement::Statement;
6463
use crate::transaction::TransactionManager;
@@ -88,7 +87,7 @@ pub trait Database:
8887
type Row: Row<Database = Self>;
8988

9089
/// The concrete `Done` implementation for this database.
91-
type Done: Done<Database = Self>;
90+
type Done: 'static + Sized + Send + Sync + Default + Extend<Self::Done>;
9291

9392
/// The concrete `Column` implementation for this database.
9493
type Column: Column<Database = Self>;

sqlx-core/src/done.rs

-9
This file was deleted.

sqlx-core/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ pub mod statement;
5858
mod common;
5959
pub mod database;
6060
pub mod describe;
61-
pub mod done;
6261
pub mod executor;
6362
pub mod from_row;
6463
mod io;

sqlx-core/src/mssql/done.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
1-
use crate::done::Done;
2-
use crate::mssql::Mssql;
31
use std::iter::{Extend, IntoIterator};
42

53
#[derive(Debug, Default)]
64
pub struct MssqlDone {
75
pub(super) rows_affected: u64,
86
}
97

10-
impl Done for MssqlDone {
11-
type Database = Mssql;
12-
13-
fn rows_affected(&self) -> u64 {
8+
impl MssqlDone {
9+
pub fn rows_affected(&self) -> u64 {
1410
self.rows_affected
1511
}
1612
}

sqlx-core/src/mysql/done.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use crate::done::Done;
2-
use crate::mysql::MySql;
31
use std::iter::{Extend, IntoIterator};
42

53
#[derive(Debug, Default)]
@@ -12,12 +10,8 @@ impl MySqlDone {
1210
pub fn last_insert_id(&self) -> u64 {
1311
self.last_insert_id
1412
}
15-
}
16-
17-
impl Done for MySqlDone {
18-
type Database = MySql;
1913

20-
fn rows_affected(&self) -> u64 {
14+
pub fn rows_affected(&self) -> u64 {
2115
self.rows_affected
2216
}
2317
}

sqlx-core/src/postgres/done.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
1-
use crate::done::Done;
2-
use crate::postgres::Postgres;
31
use std::iter::{Extend, IntoIterator};
42

53
#[derive(Debug, Default)]
64
pub struct PgDone {
75
pub(super) rows_affected: u64,
86
}
97

10-
impl Done for PgDone {
11-
type Database = Postgres;
12-
13-
fn rows_affected(&self) -> u64 {
8+
impl PgDone {
9+
pub fn rows_affected(&self) -> u64 {
1410
self.rows_affected
1511
}
1612
}

sqlx-core/src/sqlite/done.rs

+4-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use crate::done::Done;
2-
use crate::sqlite::Sqlite;
31
use std::iter::{Extend, IntoIterator};
42

53
#[derive(Debug, Default)]
@@ -9,16 +7,12 @@ pub struct SqliteDone {
97
}
108

119
impl SqliteDone {
12-
pub fn last_insert_rowid(&self) -> i64 {
13-
self.last_insert_rowid
10+
pub fn rows_affected(&self) -> u64 {
11+
self.changes
1412
}
15-
}
1613

17-
impl Done for SqliteDone {
18-
type Database = Sqlite;
19-
20-
fn rows_affected(&self) -> u64 {
21-
self.changes
14+
pub fn last_insert_rowid(&self) -> i64 {
15+
self.last_insert_rowid
2216
}
2317
}
2418

src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ pub use sqlx_core::column::ColumnIndex;
1818
pub use sqlx_core::connection::{ConnectOptions, Connection};
1919
pub use sqlx_core::database::{self, Database};
2020
pub use sqlx_core::describe::Describe;
21-
pub use sqlx_core::done::Done;
2221
pub use sqlx_core::executor::{Execute, Executor};
2322
pub use sqlx_core::from_row::FromRow;
2423
pub use sqlx_core::pool::{self, Pool};
@@ -140,7 +139,6 @@ pub mod prelude {
140139
pub use super::ConnectOptions;
141140
pub use super::Connection;
142141
pub use super::Decode;
143-
pub use super::Done;
144142
pub use super::Encode;
145143
pub use super::Executor;
146144
pub use super::FromRow;

src/macros.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
///
3333
/// | Number of Rows | Method to Call* | Returns | Notes |
3434
/// |----------------| ----------------------------|-----------------------------------------------------|-------|
35-
/// | None† | `.execute(...).await` | `sqlx::Result<impl Done>` | For `INSERT`/`UPDATE`/`DELETE` without `RETURNING`. See [`crate::Done`]. |
35+
/// | None† | `.execute(...).await` | `sqlx::Result<DB::Done>` | For `INSERT`/`UPDATE`/`DELETE` without `RETURNING`. |
3636
/// | Zero or One | `.fetch_optional(...).await`| `sqlx::Result<Option<{adhoc struct}>>` | Extra rows are ignored. |
3737
/// | Exactly One | `.fetch_one(...).await` | `sqlx::Result<{adhoc struct}>` | Errors if no rows were returned. Extra rows are ignored. Aggregate queries, use this. |
3838
/// | At Least One | `.fetch(...)` | `impl Stream<Item = sqlx::Result<{adhoc struct}>>` | Call `.try_next().await` to get each row result. |

tests/mssql/mssql.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use futures::TryStreamExt;
22
use sqlx::mssql::Mssql;
3-
use sqlx::{Column, Connection, Done, Executor, MssqlConnection, Row, Statement, TypeInfo};
3+
use sqlx::{Column, Connection, Executor, MssqlConnection, Row, Statement, TypeInfo};
44
use sqlx_core::mssql::MssqlRow;
55
use sqlx_test::new;
66

tests/mysql/mysql.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use futures::TryStreamExt;
22
use sqlx::mysql::{MySql, MySqlConnection, MySqlPool, MySqlPoolOptions, MySqlRow};
3-
use sqlx::{Column, Connection, Done, Executor, Row, Statement, TypeInfo};
3+
use sqlx::{Column, Connection, Executor, Row, Statement, TypeInfo};
44
use sqlx_test::{new, setup_if_needed};
55
use std::env;
66

tests/postgres/postgres.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use sqlx::postgres::{
33
PgConnectOptions, PgConnection, PgDatabaseError, PgErrorPosition, PgSeverity,
44
};
55
use sqlx::postgres::{PgPoolOptions, PgRow, Postgres};
6-
use sqlx::{Column, Connection, Done, Executor, Row, Statement, TypeInfo};
6+
use sqlx::{Column, Connection, Executor, Row, Statement, TypeInfo};
77
use sqlx_test::{new, setup_if_needed};
88
use std::env;
99
use std::thread;

tests/sqlite/sqlite.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use futures::TryStreamExt;
22
use sqlx::sqlite::SqlitePoolOptions;
33
use sqlx::{
4-
query, sqlite::Sqlite, sqlite::SqliteRow, Column, Connection, Done, Executor, Row,
5-
SqliteConnection, SqlitePool, Statement, TypeInfo,
4+
query, sqlite::Sqlite, sqlite::SqliteRow, Column, Connection, Executor, Row, SqliteConnection,
5+
SqlitePool, Statement, TypeInfo,
66
};
77
use sqlx_test::new;
88

0 commit comments

Comments
 (0)