Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use std SystemTime for timestamps #210

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 64 additions & 64 deletions codegen_test/src/cornucopia.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3886,10 +3886,10 @@ pub mod queries {
pub text_: T1,
pub varchar_: T2,
pub bytea_: T3,
pub timestamp_: time::PrimitiveDateTime,
pub timestamp_without_time_zone_: time::PrimitiveDateTime,
pub timestamptz_: time::OffsetDateTime,
pub timestamp_with_time_zone_: time::OffsetDateTime,
pub timestamp_: std::time::SystemTime,
pub timestamp_without_time_zone_: std::time::SystemTime,
pub timestamptz_: std::time::SystemTime,
pub timestamp_with_time_zone_: std::time::SystemTime,
pub date_: time::Date,
pub time_: time::Time,
pub json_: T4,
Expand Down Expand Up @@ -3920,10 +3920,10 @@ pub mod queries {
T17: cornucopia_async::ArraySql<Item = T16>,
T18: cornucopia_async::BytesSql,
T19: cornucopia_async::ArraySql<Item = T18>,
T20: cornucopia_async::ArraySql<Item = time::PrimitiveDateTime>,
T21: cornucopia_async::ArraySql<Item = time::PrimitiveDateTime>,
T22: cornucopia_async::ArraySql<Item = time::OffsetDateTime>,
T23: cornucopia_async::ArraySql<Item = time::OffsetDateTime>,
T20: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T21: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T22: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T23: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T24: cornucopia_async::ArraySql<Item = time::Date>,
T25: cornucopia_async::ArraySql<Item = time::Time>,
T26: cornucopia_async::JsonSql,
Expand Down Expand Up @@ -3988,10 +3988,10 @@ pub mod queries {
pub text_: String,
pub varchar_: String,
pub bytea_: Vec<u8>,
pub timestamp_: time::PrimitiveDateTime,
pub timestamp_without_time_zone_: time::PrimitiveDateTime,
pub timestamptz_: time::OffsetDateTime,
pub timestamp_with_time_zone_: time::OffsetDateTime,
pub timestamp_: std::time::SystemTime,
pub timestamp_without_time_zone_: std::time::SystemTime,
pub timestamptz_: std::time::SystemTime,
pub timestamp_with_time_zone_: std::time::SystemTime,
pub date_: time::Date,
pub time_: time::Time,
pub json_: serde_json::Value,
Expand Down Expand Up @@ -4024,10 +4024,10 @@ pub mod queries {
pub text_: &'a str,
pub varchar_: &'a str,
pub bytea_: &'a [u8],
pub timestamp_: time::PrimitiveDateTime,
pub timestamp_without_time_zone_: time::PrimitiveDateTime,
pub timestamptz_: time::OffsetDateTime,
pub timestamp_with_time_zone_: time::OffsetDateTime,
pub timestamp_: std::time::SystemTime,
pub timestamp_without_time_zone_: std::time::SystemTime,
pub timestamptz_: std::time::SystemTime,
pub timestamp_with_time_zone_: std::time::SystemTime,
pub date_: time::Date,
pub time_: time::Time,
pub json_: postgres_types::Json<&'a serde_json::value::RawValue>,
Expand Down Expand Up @@ -4138,10 +4138,10 @@ pub mod queries {
pub text_: Option<String>,
pub varchar_: Option<String>,
pub bytea_: Option<Vec<u8>>,
pub timestamp_: Option<time::PrimitiveDateTime>,
pub timestamp_without_time_zone_: Option<time::PrimitiveDateTime>,
pub timestamptz_: Option<time::OffsetDateTime>,
pub timestamp_with_time_zone_: Option<time::OffsetDateTime>,
pub timestamp_: Option<std::time::SystemTime>,
pub timestamp_without_time_zone_: Option<std::time::SystemTime>,
pub timestamptz_: Option<std::time::SystemTime>,
pub timestamp_with_time_zone_: Option<std::time::SystemTime>,
pub date_: Option<time::Date>,
pub time_: Option<time::Time>,
pub json_: Option<serde_json::Value>,
Expand Down Expand Up @@ -4174,10 +4174,10 @@ pub mod queries {
pub text_: Option<&'a str>,
pub varchar_: Option<&'a str>,
pub bytea_: Option<&'a [u8]>,
pub timestamp_: Option<time::PrimitiveDateTime>,
pub timestamp_without_time_zone_: Option<time::PrimitiveDateTime>,
pub timestamptz_: Option<time::OffsetDateTime>,
pub timestamp_with_time_zone_: Option<time::OffsetDateTime>,
pub timestamp_: Option<std::time::SystemTime>,
pub timestamp_without_time_zone_: Option<std::time::SystemTime>,
pub timestamptz_: Option<std::time::SystemTime>,
pub timestamp_with_time_zone_: Option<std::time::SystemTime>,
pub date_: Option<time::Date>,
pub time_: Option<time::Time>,
pub json_: Option<postgres_types::Json<&'a serde_json::value::RawValue>>,
Expand Down Expand Up @@ -4282,10 +4282,10 @@ pub mod queries {
pub text_: Vec<String>,
pub varchar_: Vec<String>,
pub bytea_: Vec<Vec<u8>>,
pub timestamp_: Vec<time::PrimitiveDateTime>,
pub timestamp_without_time_zone_: Vec<time::PrimitiveDateTime>,
pub timestamptz_: Vec<time::OffsetDateTime>,
pub timestamp_with_time_zone_: Vec<time::OffsetDateTime>,
pub timestamp_: Vec<std::time::SystemTime>,
pub timestamp_without_time_zone_: Vec<std::time::SystemTime>,
pub timestamptz_: Vec<std::time::SystemTime>,
pub timestamp_with_time_zone_: Vec<std::time::SystemTime>,
pub date_: Vec<time::Date>,
pub time_: Vec<time::Time>,
pub json_: Vec<serde_json::Value>,
Expand All @@ -4312,12 +4312,12 @@ pub mod queries {
pub text_: cornucopia_async::ArrayIterator<'a, &'a str>,
pub varchar_: cornucopia_async::ArrayIterator<'a, &'a str>,
pub bytea_: cornucopia_async::ArrayIterator<'a, &'a [u8]>,
pub timestamp_: cornucopia_async::ArrayIterator<'a, time::PrimitiveDateTime>,
pub timestamp_: cornucopia_async::ArrayIterator<'a, std::time::SystemTime>,
pub timestamp_without_time_zone_:
cornucopia_async::ArrayIterator<'a, time::PrimitiveDateTime>,
pub timestamptz_: cornucopia_async::ArrayIterator<'a, time::OffsetDateTime>,
cornucopia_async::ArrayIterator<'a, std::time::SystemTime>,
pub timestamptz_: cornucopia_async::ArrayIterator<'a, std::time::SystemTime>,
pub timestamp_with_time_zone_:
cornucopia_async::ArrayIterator<'a, time::OffsetDateTime>,
cornucopia_async::ArrayIterator<'a, std::time::SystemTime>,
pub date_: cornucopia_async::ArrayIterator<'a, time::Date>,
pub time_: cornucopia_async::ArrayIterator<'a, time::Time>,
pub json_: cornucopia_async::ArrayIterator<
Expand Down Expand Up @@ -4420,10 +4420,10 @@ pub mod queries {
pub text_: Option<Vec<String>>,
pub varchar_: Option<Vec<String>>,
pub bytea_: Option<Vec<Vec<u8>>>,
pub timestamp_: Option<Vec<time::PrimitiveDateTime>>,
pub timestamp_without_time_zone_: Option<Vec<time::PrimitiveDateTime>>,
pub timestamptz_: Option<Vec<time::OffsetDateTime>>,
pub timestamp_with_time_zone_: Option<Vec<time::OffsetDateTime>>,
pub timestamp_: Option<Vec<std::time::SystemTime>>,
pub timestamp_without_time_zone_: Option<Vec<std::time::SystemTime>>,
pub timestamptz_: Option<Vec<std::time::SystemTime>>,
pub timestamp_with_time_zone_: Option<Vec<std::time::SystemTime>>,
pub date_: Option<Vec<time::Date>>,
pub time_: Option<Vec<time::Time>>,
pub json_: Option<Vec<serde_json::Value>>,
Expand All @@ -4450,12 +4450,12 @@ pub mod queries {
pub text_: Option<cornucopia_async::ArrayIterator<'a, &'a str>>,
pub varchar_: Option<cornucopia_async::ArrayIterator<'a, &'a str>>,
pub bytea_: Option<cornucopia_async::ArrayIterator<'a, &'a [u8]>>,
pub timestamp_: Option<cornucopia_async::ArrayIterator<'a, time::PrimitiveDateTime>>,
pub timestamp_: Option<cornucopia_async::ArrayIterator<'a, std::time::SystemTime>>,
pub timestamp_without_time_zone_:
Option<cornucopia_async::ArrayIterator<'a, time::PrimitiveDateTime>>,
pub timestamptz_: Option<cornucopia_async::ArrayIterator<'a, time::OffsetDateTime>>,
Option<cornucopia_async::ArrayIterator<'a, std::time::SystemTime>>,
pub timestamptz_: Option<cornucopia_async::ArrayIterator<'a, std::time::SystemTime>>,
pub timestamp_with_time_zone_:
Option<cornucopia_async::ArrayIterator<'a, time::OffsetDateTime>>,
Option<cornucopia_async::ArrayIterator<'a, std::time::SystemTime>>,
pub date_: Option<cornucopia_async::ArrayIterator<'a, time::Date>>,
pub time_: Option<cornucopia_async::ArrayIterator<'a, time::Time>>,
pub json_: Option<
Expand Down Expand Up @@ -4963,10 +4963,10 @@ FROM
text_: &'a T1,
varchar_: &'a T2,
bytea_: &'a T3,
timestamp_: &'a time::PrimitiveDateTime,
timestamp_without_time_zone_: &'a time::PrimitiveDateTime,
timestamptz_: &'a time::OffsetDateTime,
timestamp_with_time_zone_: &'a time::OffsetDateTime,
timestamp_: &'a std::time::SystemTime,
timestamp_without_time_zone_: &'a std::time::SystemTime,
timestamptz_: &'a std::time::SystemTime,
timestamp_with_time_zone_: &'a std::time::SystemTime,
date_: &'a time::Date,
time_: &'a time::Time,
json_: &'a T4,
Expand Down Expand Up @@ -5211,10 +5211,10 @@ FROM
T17: cornucopia_sync::ArraySql<Item = T16>,
T18: cornucopia_sync::BytesSql,
T19: cornucopia_sync::ArraySql<Item = T18>,
T20: cornucopia_sync::ArraySql<Item = time::PrimitiveDateTime>,
T21: cornucopia_sync::ArraySql<Item = time::PrimitiveDateTime>,
T22: cornucopia_sync::ArraySql<Item = time::OffsetDateTime>,
T23: cornucopia_sync::ArraySql<Item = time::OffsetDateTime>,
T20: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T21: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T22: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T23: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T24: cornucopia_sync::ArraySql<Item = time::Date>,
T25: cornucopia_sync::ArraySql<Item = time::Time>,
T26: cornucopia_sync::JsonSql,
Expand Down Expand Up @@ -5315,10 +5315,10 @@ FROM
T17: cornucopia_sync::ArraySql<Item = T16>,
T18: cornucopia_sync::BytesSql,
T19: cornucopia_sync::ArraySql<Item = T18>,
T20: cornucopia_sync::ArraySql<Item = time::PrimitiveDateTime>,
T21: cornucopia_sync::ArraySql<Item = time::PrimitiveDateTime>,
T22: cornucopia_sync::ArraySql<Item = time::OffsetDateTime>,
T23: cornucopia_sync::ArraySql<Item = time::OffsetDateTime>,
T20: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T21: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T22: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T23: cornucopia_sync::ArraySql<Item = std::time::SystemTime>,
T24: cornucopia_sync::ArraySql<Item = time::Date>,
T25: cornucopia_sync::ArraySql<Item = time::Time>,
T26: cornucopia_sync::JsonSql,
Expand Down Expand Up @@ -5926,10 +5926,10 @@ FROM
text_: &'a T1,
varchar_: &'a T2,
bytea_: &'a T3,
timestamp_: &'a time::PrimitiveDateTime,
timestamp_without_time_zone_: &'a time::PrimitiveDateTime,
timestamptz_: &'a time::OffsetDateTime,
timestamp_with_time_zone_: &'a time::OffsetDateTime,
timestamp_: &'a std::time::SystemTime,
timestamp_without_time_zone_: &'a std::time::SystemTime,
timestamptz_: &'a std::time::SystemTime,
timestamp_with_time_zone_: &'a std::time::SystemTime,
date_: &'a time::Date,
time_: &'a time::Time,
json_: &'a T4,
Expand Down Expand Up @@ -6188,10 +6188,10 @@ FROM
T17: cornucopia_async::ArraySql<Item = T16>,
T18: cornucopia_async::BytesSql,
T19: cornucopia_async::ArraySql<Item = T18>,
T20: cornucopia_async::ArraySql<Item = time::PrimitiveDateTime>,
T21: cornucopia_async::ArraySql<Item = time::PrimitiveDateTime>,
T22: cornucopia_async::ArraySql<Item = time::OffsetDateTime>,
T23: cornucopia_async::ArraySql<Item = time::OffsetDateTime>,
T20: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T21: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T22: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T23: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T24: cornucopia_async::ArraySql<Item = time::Date>,
T25: cornucopia_async::ArraySql<Item = time::Time>,
T26: cornucopia_async::JsonSql,
Expand Down Expand Up @@ -6294,10 +6294,10 @@ FROM
T17: cornucopia_async::ArraySql<Item = T16>,
T18: cornucopia_async::BytesSql,
T19: cornucopia_async::ArraySql<Item = T18>,
T20: cornucopia_async::ArraySql<Item = time::PrimitiveDateTime>,
T21: cornucopia_async::ArraySql<Item = time::PrimitiveDateTime>,
T22: cornucopia_async::ArraySql<Item = time::OffsetDateTime>,
T23: cornucopia_async::ArraySql<Item = time::OffsetDateTime>,
T20: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T21: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T22: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T23: cornucopia_async::ArraySql<Item = std::time::SystemTime>,
T24: cornucopia_async::ArraySql<Item = time::Date>,
T25: cornucopia_async::ArraySql<Item = time::Time>,
T26: cornucopia_async::JsonSql,
Expand Down
28 changes: 10 additions & 18 deletions codegen_test/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ use std::{
borrow::Cow,
collections::HashMap,
net::{IpAddr, Ipv4Addr},
time::SystemTime,
};
use time::{OffsetDateTime, PrimitiveDateTime};
use uuid::Uuid;

use crate::cornucopia::{
Expand Down Expand Up @@ -369,15 +369,7 @@ pub fn test_domain(client: &mut Client) {

// Test hard cases
pub fn test_stress(client: &mut Client) {
let primitive_datetime_format =
time::format_description::parse("[year]-[month]-[day] [hour]:[minute]:[second]").unwrap();
let primitive_datetime =
PrimitiveDateTime::parse("2020-01-02 03:04:05", &primitive_datetime_format).unwrap();
let offset_datetime = OffsetDateTime::parse(
"1985-04-12T23:20:50.52Z",
&time::format_description::well_known::Rfc3339,
)
.unwrap();
let now = SystemTime::now();
let json: Value = serde_json::from_str("{}").unwrap();

// Every supported type
Expand All @@ -404,10 +396,10 @@ pub fn test_stress(client: &mut Client) {
text_: String::from("hello"),
varchar_: String::from("hello"),
bytea_: vec![222u8, 173u8, 190u8, 239u8],
timestamp_: primitive_datetime,
timestamp_without_time_zone_: primitive_datetime,
timestamptz_: offset_datetime,
timestamp_with_time_zone_: offset_datetime,
timestamp_: now,
timestamp_without_time_zone_: now,
timestamptz_: now,
timestamp_with_time_zone_: now,
date_: time::Date::from_calendar_date(1999, time::Month::January, 8).unwrap(),
time_: time::Time::from_hms_milli(4, 5, 6, 789).unwrap(),
json_: json.clone(),
Expand Down Expand Up @@ -475,10 +467,10 @@ pub fn test_stress(client: &mut Client) {
text_: vec![String::from("hello")],
varchar_: vec![String::from("hello")],
bytea_: vec![vec![222u8, 173u8, 190u8, 239u8]],
timestamp_: vec![primitive_datetime],
timestamp_without_time_zone_: vec![primitive_datetime],
timestamptz_: vec![offset_datetime],
timestamp_with_time_zone_: vec![offset_datetime],
timestamp_: vec![now],
timestamp_without_time_zone_: vec![now],
timestamptz_: vec![now],
timestamp_with_time_zone_: vec![now],
date_: vec![time::Date::from_calendar_date(1999, time::Month::January, 8).unwrap()],
time_: vec![time::Time::from_hms_milli(4, 5, 6, 789).unwrap()],
json_: vec![json.clone()],
Expand Down
4 changes: 2 additions & 2 deletions cornucopia/src/codegen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,7 @@ fn gen_params_struct(w: &mut impl Write, params: &PreparedItem, ctx: &GenCtx) {
.map(|p| p.param_ergo_ty(traits, ctx))
.collect::<Vec<_>>();
let fields_name = fields.iter().map(|p| &p.ident.rs);
let traits_idx = (1..=traits.len()).into_iter().map(idx_char);
let traits_idx = (1..=traits.len()).map(idx_char);
code!(w =>
#[derive($copy Debug)]
pub struct $name<$lifetime $($traits_idx: $traits,)> {
Expand Down Expand Up @@ -507,7 +507,7 @@ fn gen_query_fn<W: Write>(w: &mut W, module: &PreparedModule, query: &PreparedQu
.map(|idx| param_field[*idx].param_ergo_ty(traits, ctx))
.collect();
let params_name = order.iter().map(|idx| &param_field[*idx].ident.rs);
let traits_idx = (1..=traits.len()).into_iter().map(idx_char);
let traits_idx = (1..=traits.len()).map(idx_char);
let lazy_impl = |w: &mut W| {
if let Some((idx, index)) = row {
let item = module.rows.get_index(*idx).unwrap().1;
Expand Down
3 changes: 1 addition & 2 deletions cornucopia/src/type_registrar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -385,8 +385,7 @@ impl TypeRegistrar {
Type::FLOAT8 => ("f64", true),
Type::TEXT | Type::VARCHAR => ("String", false),
Type::BYTEA => ("Vec<u8>", false),
Type::TIMESTAMP => ("time::PrimitiveDateTime", true),
Type::TIMESTAMPTZ => ("time::OffsetDateTime", true),
Type::TIMESTAMP | Type::TIMESTAMPTZ => ("std::time::SystemTime", true),
Type::DATE => ("time::Date", true),
Type::TIME => ("time::Time", true),
Type::JSON | Type::JSONB => ("serde_json::Value", false),
Expand Down