I am trying to add and change timestamp values of a table in diesel.
I can add the values of the timestamp using Queryable
but the AsChangeset
trait is not implemented with the NaiveDateTime
from chrono
.
#[derive(Queryable, Deserialize, Serialize, AsChangeset)]
#[diesel(table_name = journal)]
#[diesel(treat_none_as_null = true)]
pub struct Journal {
pub id: i32,
pub voucher_no: String,
pub ledger_id: i32,
pub transaction_type_id: i32,
pub transaction_reference: Option<String>,
pub transaction_date: Option<NaiveDateTime>,
pub description: Option<String>,
#[diesel(sql_type = Numeric)]
pub debit: Option<bigdecimal::BigDecimal>,
#[diesel(sql_type = Numeric)]
pub credit: Option<bigdecimal::BigDecimal>,
pub currency_code: Option<String>,
pub created_at: Option<NaiveDateTime>,
pub updated_at: Option<NaiveDateTime>
}
type here
Producing errors at NaiveDateTime
values imported from chrono
.
Cargo.toml
:
[package]
name = "backend"
version = "0.1.0"
edition = "2021"
[dependencies]
#----Web Framework----
actix-web = "4.9.0"
actix-cors = "0.7.0"
#----JSON Data----
serde = {version = "1.0.217", features = ["derive"]}
serde_json = "1.0.134"
#-----Data types------
chrono = { version = "0.4.39", features = ["serde"]}
bigdecimal = {version = "0.4.7", features = ["serde"]}
#----Database Framework----
diesel = {version = "2.2.6", features = ["postgres", "chrono", "numeric"]}
dotenvy = "0.15"
#----Debug----
env_logger = "0.11.6"
Error in Terminal
harshet@Cormac:~/Documents/Project/School-Project/backend$ cargo build
Compiling backend v0.1.0 (/home/harshet/Documents/Project/School-Project/backend)
warning: unused `#[macro_use]` import
--> src/main.rs:2:1
|
2 | #[macro_use]
| ^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` on by default
warning: unused import: `NaiveDate`
--> src/models.rs:1:29
|
1 | use chrono::{NaiveDateTime, NaiveDate};
| ^^^^^^^^^
warning: unused import: `User`
--> src/ops/user_data.rs:3:30
|
3 | use crate::models::{NewUser, User};
| ^^^^
warning: unused import: `JournalData`
--> src/ops/accounts.rs:3:57
|
3 | use crate::{db::establish_connection, models::{Journal, JournalData, Ledger, LedgerData, TransactionTypeData}};
| ^^^^^^^^^^^
warning: unused import: `crate::schema::journal::dsl::*`
--> src/ops/accounts.rs:10:9
|
10 | use crate::schema::journal::dsl::*;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `std::option::Option<NaiveDateTime>: AppearsOnTable<schema::journal::table>` is not satisfied
--> src/models.rs:60:45
|
60 | #[derive(Queryable, Deserialize, Serialize, AsChangeset)]
| ^^^^^^^^^^^ the trait `AppearsOnTable<schema::journal::table>` is not implemented for `std::option::Option<NaiveDateTime>`, which is required by `diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>: diesel::AsChangeset`
|
= help: the following other types implement trait `AppearsOnTable<QS>`:
`&'a T` implements `AppearsOnTable<QS>`
`(T0, T1)` implements `AppearsOnTable<QS>`
`(T0, T1, T2)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6, T7)` implements `AppearsOnTable<QS>`
and 197 others
= note: required for `diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>` to implement `diesel::AsChangeset`
= note: this error originates in the derive macro `AsChangeset` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `std::option::Option<NaiveDateTime>: AppearsOnTable<schema::journal::table>` is not satisfied
--> src/models.rs:60:45
|
60 | #[derive(Queryable, Deserialize, Serialize, AsChangeset)]
| ^^^^^^^^^^^ the trait `AppearsOnTable<schema::journal::table>` is not implemented for `std::option::Option<NaiveDateTime>`, which is required by `diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &'update std::option::Option<NaiveDateTime>>: diesel::AsChangeset`
|
= help: the following other types implement trait `AppearsOnTable<QS>`:
`&'a T` implements `AppearsOnTable<QS>`
`(T0, T1)` implements `AppearsOnTable<QS>`
`(T0, T1, T2)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6, T7)` implements `AppearsOnTable<QS>`
and 197 others
= note: required for `&'update std::option::Option<NaiveDateTime>` to implement `AppearsOnTable<schema::journal::table>`
= note: required for `diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &'update std::option::Option<NaiveDateTime>>` to implement `diesel::AsChangeset`
= note: this error originates in the derive macro `AsChangeset` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `std::option::Option<NaiveDateTime>: AppearsOnTable<schema::journal::table>` is not satisfied
--> src/models.rs:60:45
|
60 | #[derive(Queryable, Deserialize, Serialize, AsChangeset)]
| ^^^^^^^^^^^ the trait `AppearsOnTable<schema::journal::table>` is not implemented for `std::option::Option<NaiveDateTime>`, which is required by `(diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::voucher_no, diesel::expression::bound::Bound<diesel::sql_types::Text, std::string::String>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::ledger_id, diesel::expression::bound::Bound<Integer, i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_type_id, diesel::expression::bound::Bound<Integer, i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_reference, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::description, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::debit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::credit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::currency_code, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::created_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, std::option::Option<NaiveDateTime>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::updated_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, std::option::Option<NaiveDateTime>>>>): diesel::AsChangeset`
|
= help: the following other types implement trait `AppearsOnTable<QS>`:
`&'a T` implements `AppearsOnTable<QS>`
`(T0, T1)` implements `AppearsOnTable<QS>`
`(T0, T1, T2)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6, T7)` implements `AppearsOnTable<QS>`
and 197 others
= note: required for `diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>` to implement `diesel::AsChangeset`
= note: 1 redundant requirement hidden
= note: required for `(Grouped<Eq<voucher_no, Bound<Text, String>>>, Grouped<Eq<ledger_id, Bound<Integer, i32>>>, Grouped<Eq<..., ...>>, ..., ..., ..., ..., ..., ..., ..., ...)` to implement `diesel::AsChangeset`
= note: the full name for the type has been written to '/home/harshet/Documents/Project/School-Project/backend/target/debug/deps/backend-8645559aa283900e.long-type-3605992901548973283.txt'
= note: consider using `--verbose` to print the full type name to the console
= note: this error originates in the derive macro `AsChangeset` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `std::option::Option<NaiveDateTime>: AppearsOnTable<schema::journal::table>` is not satisfied
--> src/models.rs:60:45
|
60 | #[derive(Queryable, Deserialize, Serialize, AsChangeset)]
| ^^^^^^^^^^^ the trait `AppearsOnTable<schema::journal::table>` is not implemented for `std::option::Option<NaiveDateTime>`, which is required by `(diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::voucher_no, diesel::expression::bound::Bound<diesel::sql_types::Text, &'update std::string::String>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::ledger_id, diesel::expression::bound::Bound<Integer, &'update i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_type_id, diesel::expression::bound::Bound<Integer, &'update i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_reference, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &'update std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &'update std::option::Option<NaiveDateTime>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::description, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &'update std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::debit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, &'update std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::credit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, &'update std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::currency_code, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &'update std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::created_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, &'update std::option::Option<NaiveDateTime>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::updated_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, &'update std::option::Option<NaiveDateTime>>>>): diesel::AsChangeset`
|
= help: the following other types implement trait `AppearsOnTable<QS>`:
`&'a T` implements `AppearsOnTable<QS>`
`(T0, T1)` implements `AppearsOnTable<QS>`
`(T0, T1, T2)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6)` implements `AppearsOnTable<QS>`
`(T0, T1, T2, T3, T4, T5, T6, T7)` implements `AppearsOnTable<QS>`
and 197 others
= note: required for `&'update std::option::Option<NaiveDateTime>` to implement `AppearsOnTable<schema::journal::table>`
= note: required for `diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &'update std::option::Option<NaiveDateTime>>` to implement `diesel::AsChangeset`
= note: 1 redundant requirement hidden
= note: required for `(Grouped<Eq<voucher_no, Bound<Text, &String>>>, Grouped<Eq<ledger_id, Bound<Integer, &i32>>>, Grouped<Eq<..., ...>>, ..., ..., ..., ..., ..., ..., ..., ...)` to implement `diesel::AsChangeset`
= note: the full name for the type has been written to '/home/harshet/Documents/Project/School-Project/backend/target/debug/deps/backend-8645559aa283900e.long-type-13353381141181145315.txt'
= note: consider using `--verbose` to print the full type name to the console
= note: this error originates in the derive macro `AsChangeset` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0599]: the method `as_changeset` exists for tuple `(Grouped<Eq<voucher_no, Bound<Text, String>>>, Grouped<Eq<ledger_id, Bound<Integer, i32>>>, Grouped<Eq<..., ...>>, ..., ..., ..., ..., ..., ..., ..., ...)`, but its trait bounds were not satisfied
--> src/models.rs:60:45
|
60 | #[derive(Queryable, Deserialize, Serialize, AsChangeset)]
| ^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
|
::: /home/harshet/.cargo/registry/src/index.crates.io-6f17d22bba15001f/diesel-2.2.6/src/expression/grouped.rs:8:1
|
8 | pub struct Grouped<T>(pub T);
| --------------------- doesn't satisfy `<_ as AsChangeset>::Target = _` or `_: AsChangeset`
|
= note: the full type name has been written to '/home/harshet/Documents/Project/School-Project/backend/target/debug/deps/backend-8645559aa283900e.long-type-3605992901548973283.txt'
= note: consider using `--verbose` to print the full type name to the console
= note: the following trait bounds were not satisfied:
`<diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>> as diesel::AsChangeset>::Target = _`
which is required by `(diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::voucher_no, diesel::expression::bound::Bound<diesel::sql_types::Text, std::string::String>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::ledger_id, diesel::expression::bound::Bound<Integer, i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_type_id, diesel::expression::bound::Bound<Integer, i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_reference, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::description, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::debit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::credit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::currency_code, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::created_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, std::option::Option<NaiveDateTime>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::updated_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, std::option::Option<NaiveDateTime>>>>): diesel::AsChangeset`
`diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>>: diesel::AsChangeset`
which is required by `(diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::voucher_no, diesel::expression::bound::Bound<diesel::sql_types::Text, std::string::String>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::ledger_id, diesel::expression::bound::Bound<Integer, i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_type_id, diesel::expression::bound::Bound<Integer, i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_reference, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, std::option::Option<NaiveDateTime>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::description, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::debit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::credit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::currency_code, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::created_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, std::option::Option<NaiveDateTime>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::updated_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, std::option::Option<NaiveDateTime>>>>): diesel::AsChangeset`
= note: this error originates in the derive macro `AsChangeset` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0599]: the method `as_changeset` exists for tuple `(Grouped<Eq<voucher_no, Bound<Text, &String>>>, Grouped<Eq<ledger_id, Bound<Integer, &i32>>>, Grouped<Eq<..., ...>>, ..., ..., ..., ..., ..., ..., ..., ...)`, but its trait bounds were not satisfied
--> src/models.rs:60:45
|
60 | #[derive(Queryable, Deserialize, Serialize, AsChangeset)]
| ^^^^^^^^^^^ method cannot be called due to unsatisfied trait bounds
|
::: /home/harshet/.cargo/registry/src/index.crates.io-6f17d22bba15001f/diesel-2.2.6/src/expression/grouped.rs:8:1
|
8 | pub struct Grouped<T>(pub T);
| --------------------- doesn't satisfy `<_ as AsChangeset>::Target = _` or `_: AsChangeset`
|
= note: the full type name has been written to '/home/harshet/Documents/Project/School-Project/backend/target/debug/deps/backend-8645559aa283900e.long-type-2080127087631790061.txt'
= note: consider using `--verbose` to print the full type name to the console
= note: the following trait bounds were not satisfied:
`<diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &std::option::Option<NaiveDateTime>>> as diesel::AsChangeset>::Target = _`
which is required by `(diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::voucher_no, diesel::expression::bound::Bound<diesel::sql_types::Text, &std::string::String>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::ledger_id, diesel::expression::bound::Bound<Integer, &i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_type_id, diesel::expression::bound::Bound<Integer, &i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_reference, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &std::option::Option<NaiveDateTime>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::description, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::debit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, &std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::credit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, &std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::currency_code, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::created_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, &std::option::Option<NaiveDateTime>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::updated_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, &std::option::Option<NaiveDateTime>>>>): diesel::AsChangeset`
`diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &std::option::Option<NaiveDateTime>>>: diesel::AsChangeset`
which is required by `(diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::voucher_no, diesel::expression::bound::Bound<diesel::sql_types::Text, &std::string::String>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::ledger_id, diesel::expression::bound::Bound<Integer, &i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_type_id, diesel::expression::bound::Bound<Integer, &i32>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_reference, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::transaction_date, &std::option::Option<NaiveDateTime>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::description, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::debit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, &std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::credit, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Numeric>, &std::option::Option<BigDecimal>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::currency_code, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Text>, &std::option::Option<std::string::String>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::created_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, &std::option::Option<NaiveDateTime>>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<schema::journal::columns::updated_at, diesel::expression::bound::Bound<diesel::sql_types::Nullable<diesel::sql_types::Timestamp>, &std::option::Option<NaiveDateTime>>>>): diesel::AsChangeset`
= note: this error originates in the derive macro `AsChangeset` (in Nightly builds, run with -Z macro-backtrace for more info)