Skip to content

Commit 16db1f0

Browse files
authored
Merge pull request #2 from remkop22/development
Version 0.2.0
2 parents 4e006a4 + ec069fc commit 16db1f0

File tree

4 files changed

+24
-14
lines changed

4 files changed

+24
-14
lines changed

Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ license-file.workspace = true
1212
keywords.workspace = true
1313
categories.workspace = true
1414

15+
[lib]
16+
doctest = false
17+
1518
[workspace]
1619
members = ["postgres-from-row-derive"]
1720

1821
[workspace.package]
19-
version = "0.1.0"
22+
version = "0.2.0"
2023
authors = ["Remo Pas <remo.pas22@gmail.com>"]
2124
edition = "2021"
2225
repository = "https://github.com/remkop22/postgres-from-row"
@@ -26,7 +29,7 @@ keywords = ["postgres", "postgres-tokio", "postgresql", "from-row", "mapper"]
2629
categories = ["database", "parsing", "data-structures"]
2730

2831
[workspace.dependencies]
29-
postgres-from-row-derive = { path = "postgres-from-row-derive", version = "=0.1.0" }
32+
postgres-from-row-derive = { path = "postgres-from-row-derive", version = "=0.2.0" }
3033

3134
[features]
3235
default = ["postgres"]

postgres-from-row-derive/src/lib.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
use darling::ast::{self, Style};
32
use darling::{FromDeriveInput, FromField};
43
use proc_macro::TokenStream;
@@ -56,8 +55,8 @@ impl DeriveFromRow {
5655
Style::Struct => fields.fields,
5756
};
5857

59-
let from_row_fields = fields.iter().map(FromRowField::generate_from_row);
60-
let try_from_row_fields = fields.iter().map(FromRowField::generate_try_from_row);
58+
let from_row_fields = fields.iter().map(|f| f.generate_from_row(&module));
59+
let try_from_row_fields = fields.iter().map(|f| f.generate_try_from_row(&module));
6160

6261
Ok(quote! {
6362
impl #impl_generics postgres_from_row::FromRow for #ident #ty_generics #where_clause {
@@ -68,7 +67,7 @@ impl DeriveFromRow {
6867
}
6968
}
7069

71-
fn try_from_row(row: &#module::Row) -> Result<Self, #module::Error> {
70+
fn try_from_row(row: &#module::Row) -> std::result::Result<Self, #module::Error> {
7271
Ok(Self {
7372
#(#try_from_row_fields),*
7473
})
@@ -89,7 +88,7 @@ struct FromRowField {
8988
}
9089

9190
impl FromRowField {
92-
fn generate_from_row(&self) -> proc_macro2::TokenStream {
91+
fn generate_from_row(&self, module: &Ident) -> proc_macro2::TokenStream {
9392
let ident = self.ident.as_ref().unwrap();
9493
let str_ident = ident.to_string();
9594
let ty = &self.ty;
@@ -100,11 +99,12 @@ impl FromRowField {
10099
}
101100
} else {
102101
quote! {
103-
#ident: row.get::<&str, #ty>(#str_ident)
102+
#ident: #module::Row::get::<&str, #ty>(row, #str_ident)
104103
}
105104
}
106105
}
107-
fn generate_try_from_row(&self) -> proc_macro2::TokenStream {
106+
107+
fn generate_try_from_row(&self, module: &Ident) -> proc_macro2::TokenStream {
108108
let ident = self.ident.as_ref().unwrap();
109109
let str_ident = ident.to_string();
110110
let ty = &self.ty;
@@ -115,7 +115,7 @@ impl FromRowField {
115115
}
116116
} else {
117117
quote! {
118-
#ident: row.try_get::<&str, #ty>(#str_ident)?
118+
#ident: #module::Row::try_get::<&str, #ty>(row, #str_ident)?
119119
}
120120
}
121121
}

src/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
//! #[derive(FromRow)]
2222
//! struct Todo {
2323
//! todo_id: i32,
24-
//! text: String
24+
//! text: String,
2525
//! author_id: i32,
2626
//! }
2727
//!
@@ -91,8 +91,7 @@ pub trait FromRow: Sized {
9191
fn try_from_row(row: &active_postgres::Row) -> Result<Self, active_postgres::Error>;
9292
}
9393

94-
#[doc(no_inline)]
95-
/// gfdsfd
94+
#[doc(hidden)]
9695
pub use active_postgres::FromRow;
9796

9897
//

tests/integration.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use postgres::Row;
12
use postgres_from_row::FromRow;
23

34
#[derive(FromRow)]
@@ -6,7 +7,7 @@ pub struct Todo {
67
todo_id: i32,
78
text: String,
89
#[from_row(flatten)]
9-
user: User
10+
user: User,
1011
}
1112

1213
#[derive(FromRow)]
@@ -15,4 +16,11 @@ pub struct User {
1516
user_id: i32,
1617
}
1718

19+
#[allow(dead_code)]
20+
fn from_row(row: &Row) {
21+
let _ = Todo::from_row(row);
22+
let _ = Todo::try_from_row(row).unwrap();
1823

24+
let _ = User::from_row(row);
25+
let _ = Todo::try_from_row(row).unwrap();
26+
}

0 commit comments

Comments
 (0)