Remove the Done trait

This commit is contained in:
Jonas Platte 2021-01-12 13:17:13 +01:00
parent fd0101afb2
commit a1d562f04b
No known key found for this signature in database
GPG key ID: 9D5B897BFF66575C
19 changed files with 23 additions and 63 deletions

View file

@ -20,6 +20,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- [[#940]] Rename the `#[sqlx(rename)]` attribute used to specify the type name on the database
side to `#[sqlx(type_name)]` [[@jplatte]].
- [[#976]] Remove the `Done` trait. The `.rows_affected()` method is now available as an inherent
method on `PgDone`, `MySqlDone` and so on.
## 0.4.2 - 2020-12-19
- [[#908]] Fix `whoami` crash on FreeBSD platform [[@fundon]] [[@AldaronLau]]

View file

@ -1,5 +1,4 @@
use sqlx::mysql::MySqlPool;
use sqlx::Done;
use std::env;
use structopt::StructOpt;

View file

@ -1,7 +1,6 @@
use async_trait::async_trait;
use dotenv;
use sqlx::postgres::PgPool;
use sqlx::Done;
use std::{env, io::Write, sync::Arc};
use structopt::StructOpt;

View file

@ -1,5 +1,4 @@
use sqlx::postgres::PgPool;
use sqlx::Done;
use std::env;
use structopt::StructOpt;

View file

@ -1,5 +1,4 @@
use sqlx::sqlite::SqlitePool;
use sqlx::Done;
use std::env;
use structopt::StructOpt;

View file

@ -1,5 +1,3 @@
use crate::any::Any;
use crate::done::Done;
use std::iter::{Extend, IntoIterator};
#[derive(Debug, Default)]
@ -9,19 +7,15 @@ pub struct AnyDone {
}
impl AnyDone {
pub fn rows_affected(&self) -> u64 {
self.rows_affected
}
pub fn last_insert_id(&self) -> Option<i64> {
self.last_insert_id
}
}
impl Done for AnyDone {
type Database = Any;
fn rows_affected(&self) -> u64 {
self.rows_affected
}
}
impl Extend<AnyDone> for AnyDone {
fn extend<T: IntoIterator<Item = AnyDone>>(&mut self, iter: T) {
for elem in iter {

View file

@ -58,7 +58,6 @@ use std::fmt::Debug;
use crate::arguments::Arguments;
use crate::column::Column;
use crate::connection::Connection;
use crate::done::Done;
use crate::row::Row;
use crate::statement::Statement;
use crate::transaction::TransactionManager;
@ -88,7 +87,7 @@ pub trait Database:
type Row: Row<Database = Self>;
/// The concrete `Done` implementation for this database.
type Done: Done<Database = Self>;
type Done: 'static + Sized + Send + Sync + Default + Extend<Self::Done>;
/// The concrete `Column` implementation for this database.
type Column: Column<Database = Self>;

View file

@ -1,9 +0,0 @@
use crate::database::Database;
use std::iter::Extend;
pub trait Done: 'static + Sized + Send + Sync + Default + Extend<Self> {
type Database: Database;
/// Returns the number of rows affected by an `UPDATE`, `INSERT`, or `DELETE`.
fn rows_affected(&self) -> u64;
}

View file

@ -58,7 +58,6 @@ pub mod statement;
mod common;
pub mod database;
pub mod describe;
pub mod done;
pub mod executor;
pub mod from_row;
mod io;

View file

@ -1,5 +1,3 @@
use crate::done::Done;
use crate::mssql::Mssql;
use std::iter::{Extend, IntoIterator};
#[derive(Debug, Default)]
@ -7,10 +5,8 @@ pub struct MssqlDone {
pub(super) rows_affected: u64,
}
impl Done for MssqlDone {
type Database = Mssql;
fn rows_affected(&self) -> u64 {
impl MssqlDone {
pub fn rows_affected(&self) -> u64 {
self.rows_affected
}
}

View file

@ -1,5 +1,3 @@
use crate::done::Done;
use crate::mysql::MySql;
use std::iter::{Extend, IntoIterator};
#[derive(Debug, Default)]
@ -12,12 +10,8 @@ impl MySqlDone {
pub fn last_insert_id(&self) -> u64 {
self.last_insert_id
}
}
impl Done for MySqlDone {
type Database = MySql;
fn rows_affected(&self) -> u64 {
pub fn rows_affected(&self) -> u64 {
self.rows_affected
}
}

View file

@ -1,5 +1,3 @@
use crate::done::Done;
use crate::postgres::Postgres;
use std::iter::{Extend, IntoIterator};
#[derive(Debug, Default)]
@ -7,10 +5,8 @@ pub struct PgDone {
pub(super) rows_affected: u64,
}
impl Done for PgDone {
type Database = Postgres;
fn rows_affected(&self) -> u64 {
impl PgDone {
pub fn rows_affected(&self) -> u64 {
self.rows_affected
}
}

View file

@ -1,5 +1,3 @@
use crate::done::Done;
use crate::sqlite::Sqlite;
use std::iter::{Extend, IntoIterator};
#[derive(Debug, Default)]
@ -9,19 +7,15 @@ pub struct SqliteDone {
}
impl SqliteDone {
pub fn rows_affected(&self) -> u64 {
self.changes
}
pub fn last_insert_rowid(&self) -> i64 {
self.last_insert_rowid
}
}
impl Done for SqliteDone {
type Database = Sqlite;
fn rows_affected(&self) -> u64 {
self.changes
}
}
impl Extend<SqliteDone> for SqliteDone {
fn extend<T: IntoIterator<Item = SqliteDone>>(&mut self, iter: T) {
for elem in iter {

View file

@ -18,7 +18,6 @@ pub use sqlx_core::column::ColumnIndex;
pub use sqlx_core::connection::{ConnectOptions, Connection};
pub use sqlx_core::database::{self, Database};
pub use sqlx_core::describe::Describe;
pub use sqlx_core::done::Done;
pub use sqlx_core::executor::{Execute, Executor};
pub use sqlx_core::from_row::FromRow;
pub use sqlx_core::pool::{self, Pool};
@ -140,7 +139,6 @@ pub mod prelude {
pub use super::ConnectOptions;
pub use super::Connection;
pub use super::Decode;
pub use super::Done;
pub use super::Encode;
pub use super::Executor;
pub use super::FromRow;

View file

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

View file

@ -1,6 +1,6 @@
use futures::TryStreamExt;
use sqlx::mssql::Mssql;
use sqlx::{Column, Connection, Done, Executor, MssqlConnection, Row, Statement, TypeInfo};
use sqlx::{Column, Connection, Executor, MssqlConnection, Row, Statement, TypeInfo};
use sqlx_core::mssql::MssqlRow;
use sqlx_test::new;

View file

@ -1,6 +1,6 @@
use futures::TryStreamExt;
use sqlx::mysql::{MySql, MySqlConnection, MySqlPool, MySqlPoolOptions, MySqlRow};
use sqlx::{Column, Connection, Done, Executor, Row, Statement, TypeInfo};
use sqlx::{Column, Connection, Executor, Row, Statement, TypeInfo};
use sqlx_test::{new, setup_if_needed};
use std::env;

View file

@ -3,7 +3,7 @@ use sqlx::postgres::{
PgConnectOptions, PgConnection, PgDatabaseError, PgErrorPosition, PgSeverity,
};
use sqlx::postgres::{PgPoolOptions, PgRow, Postgres};
use sqlx::{Column, Connection, Done, Executor, Row, Statement, TypeInfo};
use sqlx::{Column, Connection, Executor, Row, Statement, TypeInfo};
use sqlx_test::{new, setup_if_needed};
use std::env;
use std::thread;

View file

@ -1,8 +1,8 @@
use futures::TryStreamExt;
use sqlx::sqlite::SqlitePoolOptions;
use sqlx::{
query, sqlite::Sqlite, sqlite::SqliteRow, Column, Connection, Done, Executor, Row,
SqliteConnection, SqlitePool, Statement, TypeInfo,
query, sqlite::Sqlite, sqlite::SqliteRow, Column, Connection, Executor, Row, SqliteConnection,
SqlitePool, Statement, TypeInfo,
};
use sqlx_test::new;