diff --git a/src/database/db_connection.rs b/src/database/db_connection.rs index 60d70ac7..d5612014 100644 --- a/src/database/db_connection.rs +++ b/src/database/db_connection.rs @@ -218,7 +218,7 @@ impl DatabaseConnection { } } - pub fn into_transaction_log(self) -> Vec { + pub fn into_transaction_log(self) -> Vec { let mut mocker = self.as_mock_connection().get_mocker_mutex().lock().unwrap(); mocker.drain_transaction_log() } diff --git a/src/database/mock.rs b/src/database/mock.rs index f98c4b9d..012c941f 100644 --- a/src/database/mock.rs +++ b/src/database/mock.rs @@ -9,7 +9,7 @@ use std::{collections::BTreeMap, sync::Arc}; #[derive(Debug)] pub struct MockDatabase { db_backend: DbBackend, - transaction_log: Vec, + transaction_log: Vec, exec_results: Vec, query_results: Vec>, } @@ -30,7 +30,7 @@ pub trait IntoMockRow { } #[derive(Debug, Clone, PartialEq)] -pub struct Transaction { +pub struct MockTransaction { stmts: Vec, } @@ -67,7 +67,7 @@ impl MockDatabase { impl MockDatabaseTrait for MockDatabase { fn execute(&mut self, counter: usize, statement: Statement) -> Result { - self.transaction_log.push(Transaction::one(statement)); + self.transaction_log.push(MockTransaction::one(statement)); if counter < self.exec_results.len() { Ok(ExecResult { result: ExecResultHolder::Mock(std::mem::take(&mut self.exec_results[counter])), @@ -78,7 +78,7 @@ impl MockDatabaseTrait for MockDatabase { } fn query(&mut self, counter: usize, statement: Statement) -> Result, DbErr> { - self.transaction_log.push(Transaction::one(statement)); + self.transaction_log.push(MockTransaction::one(statement)); if counter < self.query_results.len() { Ok(std::mem::take(&mut self.query_results[counter]) .into_iter() @@ -91,7 +91,7 @@ impl MockDatabaseTrait for MockDatabase { } } - fn drain_transaction_log(&mut self) -> Vec { + fn drain_transaction_log(&mut self) -> Vec { std::mem::take(&mut self.transaction_log) } @@ -140,7 +140,7 @@ impl IntoMockRow for BTreeMap<&str, Value> { } } -impl Transaction { +impl MockTransaction { pub fn from_sql_and_values(db_backend: DbBackend, sql: &str, values: I) -> Self where I: IntoIterator, @@ -151,12 +151,12 @@ impl Transaction { )) } - /// Create a Transaction with one statement + /// Create a MockTransaction with one statement pub fn one(stmt: Statement) -> Self { Self { stmts: vec![stmt] } } - /// Create a Transaction with many statements + /// Create a MockTransaction with many statements pub fn many(stmts: I) -> Self where I: IntoIterator, @@ -166,7 +166,7 @@ impl Transaction { } } - /// Wrap each Statement as a single-statement Transaction + /// Wrap each Statement as a single-statement MockTransaction pub fn wrap(stmts: I) -> Vec where I: IntoIterator, diff --git a/src/database/statement.rs b/src/database/statement.rs index 12b07487..63a1d57f 100644 --- a/src/database/statement.rs +++ b/src/database/statement.rs @@ -104,4 +104,4 @@ build_schema_stmt!(sea_query::TableCreateStatement); build_schema_stmt!(sea_query::TableDropStatement); build_schema_stmt!(sea_query::TableAlterStatement); build_schema_stmt!(sea_query::TableRenameStatement); -build_schema_stmt!(sea_query::TableTruncateStatement); +build_schema_stmt!(sea_query::TableTruncateStatement); \ No newline at end of file diff --git a/src/docs.rs b/src/docs.rs index 4d1226c3..ec8542a6 100644 --- a/src/docs.rs +++ b/src/docs.rs @@ -3,7 +3,7 @@ //! Relying on [SQLx](https://github.com/launchbadge/sqlx), SeaORM is a new library with async support from day 1. //! //! ``` -//! # use sea_orm::{DbConn, error::*, entity::*, query::*, tests_cfg::*, DatabaseConnection, DbBackend, MockDatabase, Transaction, IntoMockRow}; +//! # use sea_orm::{DbConn, error::*, entity::*, query::*, tests_cfg::*, DatabaseConnection, DbBackend, MockDatabase, MockTransaction, IntoMockRow}; //! # let db = MockDatabase::new(DbBackend::Postgres) //! # .append_query_results(vec![ //! # vec![cake::Model { @@ -40,12 +40,12 @@ //! # assert_eq!( //! # db.into_transaction_log(), //! # vec![ -//! # Transaction::from_sql_and_values( +//! # MockTransaction::from_sql_and_values( //! # DbBackend::Postgres, //! # r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, //! # vec![] //! # ), -//! # Transaction::from_sql_and_values( +//! # MockTransaction::from_sql_and_values( //! # DbBackend::Postgres, //! # r#"SELECT "fruit"."id", "fruit"."name", "fruit"."cake_id" FROM "fruit""#, //! # vec![] @@ -88,7 +88,7 @@ //! Use mock connections to write unit tests for your logic. //! //! ``` -//! # use sea_orm::{error::*, entity::*, query::*, tests_cfg::*, DbConn, MockDatabase, Transaction, DbBackend}; +//! # use sea_orm::{error::*, entity::*, query::*, tests_cfg::*, DbConn, MockDatabase, MockTransaction, DbBackend}; //! # async fn function(db: DbConn) -> Result<(), DbErr> { //! // Setup mock connection //! let db = MockDatabase::new(DbBackend::Postgres) @@ -115,7 +115,7 @@ //! assert_eq!( //! db.into_transaction_log(), //! vec![ -//! Transaction::from_sql_and_values( +//! MockTransaction::from_sql_and_values( //! DbBackend::Postgres, //! r#"SELECT "cake"."id", "cake"."name" FROM "cake" LIMIT $1"#, //! vec![1u64.into()] diff --git a/src/driver/mock.rs b/src/driver/mock.rs index 96317c6d..b932eafd 100644 --- a/src/driver/mock.rs +++ b/src/driver/mock.rs @@ -1,6 +1,6 @@ use crate::{ - debug_print, error::*, DatabaseConnection, DbBackend, ExecResult, MockDatabase, QueryResult, - Statement, Transaction, + debug_print, error::*, DatabaseConnection, DbBackend, ExecResult, MockDatabase, + MockTransaction, QueryResult, Statement, }; use futures::Stream; use std::{ @@ -26,7 +26,7 @@ pub trait MockDatabaseTrait: Send + Debug { fn query(&mut self, counter: usize, stmt: Statement) -> Result, DbErr>; - fn drain_transaction_log(&mut self) -> Vec; + fn drain_transaction_log(&mut self) -> Vec; fn get_database_backend(&self) -> DbBackend; } diff --git a/src/entity/base_entity.rs b/src/entity/base_entity.rs index aef46207..2a40c686 100644 --- a/src/entity/base_entity.rs +++ b/src/entity/base_entity.rs @@ -82,7 +82,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![ @@ -137,12 +137,12 @@ pub trait EntityTrait: EntityName { /// assert_eq!( /// db.into_transaction_log(), /// vec![ - /// Transaction::from_sql_and_values( + /// MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."id", "cake"."name" FROM "cake" LIMIT $1"#, /// vec![1u64.into()] /// ), - /// Transaction::from_sql_and_values( + /// MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, /// vec![] @@ -160,7 +160,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![ @@ -190,7 +190,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."id", "cake"."name" FROM "cake" WHERE "cake"."id" = $1"#, /// vec![11i32.into()] @@ -200,7 +200,7 @@ pub trait EntityTrait: EntityName { /// Find by composite key /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![ @@ -230,7 +230,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// [ /// r#"SELECT "cake_filling"."cake_id", "cake_filling"."filling_id" FROM "cake_filling""#, @@ -262,7 +262,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_exec_results(vec![ @@ -292,7 +292,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1) RETURNING "id""#, vec!["Apple Pie".into()] /// )]); /// ``` @@ -309,7 +309,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_exec_results(vec![ @@ -343,7 +343,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, r#"INSERT INTO "cake" ("name") VALUES ($1), ($2) RETURNING "id""#, /// vec!["Apple Pie".into(), "Orange Scone".into()] /// )]); @@ -364,7 +364,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_exec_results(vec![ @@ -398,7 +398,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, r#"UPDATE "fruit" SET "name" = $1 WHERE "fruit"."id" = $2 AND "fruit"."name" LIKE $3"#, /// vec!["Orange".into(), 1i32.into(), "%orange%".into()] /// )]); @@ -418,7 +418,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_exec_results(vec![ @@ -446,7 +446,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, r#"UPDATE "fruit" SET "cake_id" = $1 WHERE "fruit"."name" LIKE $2"#, vec![Value::Int(None), "%Apple%".into()] /// )]); /// ``` @@ -462,7 +462,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockExecResult, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_exec_results(vec![ @@ -491,7 +491,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, r#"DELETE FROM "fruit" WHERE "fruit"."id" = $1"#, vec![3i32.into()] /// )]); /// ``` @@ -510,7 +510,7 @@ pub trait EntityTrait: EntityName { /// /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{entity::*, error::*, query::*, tests_cfg::*, MockDatabase, MockExecResult, Transaction, DbBackend}; + /// # use sea_orm::{entity::*, error::*, query::*, tests_cfg::*, MockDatabase, MockExecResult, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_exec_results(vec![ @@ -537,7 +537,7 @@ pub trait EntityTrait: EntityName { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, r#"DELETE FROM "fruit" WHERE "fruit"."name" LIKE $1"#, vec!["%Apple%".into()] /// )]); /// ``` diff --git a/src/entity/model.rs b/src/entity/model.rs index 318b8e70..f8225ab8 100644 --- a/src/entity/model.rs +++ b/src/entity/model.rs @@ -38,7 +38,7 @@ pub trait FromQueryResult: Sized { /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![vec![ @@ -81,7 +81,7 @@ pub trait FromQueryResult: Sized { /// # }); /// # assert_eq!( /// # db.into_transaction_log(), - /// # vec![Transaction::from_sql_and_values( + /// # vec![MockTransaction::from_sql_and_values( /// # DbBackend::Postgres, /// # r#"SELECT "name", COUNT(*) AS "num_of_cakes" FROM "cake" GROUP BY("name")"#, /// # vec![] diff --git a/src/executor/paginator.rs b/src/executor/paginator.rs index 28f8574b..712c0afa 100644 --- a/src/executor/paginator.rs +++ b/src/executor/paginator.rs @@ -158,7 +158,7 @@ where mod tests { use crate::entity::prelude::*; use crate::{tests_cfg::*, ConnectionTrait}; - use crate::{DatabaseConnection, DbBackend, MockDatabase, Transaction}; + use crate::{DatabaseConnection, DbBackend, MockDatabase, MockTransaction}; use futures::TryStreamExt; use sea_query::{Alias, Expr, SelectStatement, Value}; @@ -228,7 +228,7 @@ mod tests { query_builder.build(select.offset(4).limit(2)), ]; - assert_eq!(db.into_transaction_log(), Transaction::wrap(stmts)); + assert_eq!(db.into_transaction_log(), MockTransaction::wrap(stmts)); Ok(()) } @@ -262,7 +262,7 @@ mod tests { query_builder.build(select.offset(4).limit(2)), ]; - assert_eq!(db.into_transaction_log(), Transaction::wrap(stmts)); + assert_eq!(db.into_transaction_log(), MockTransaction::wrap(stmts)); Ok(()) } @@ -294,7 +294,7 @@ mod tests { let query_builder = db.get_database_backend(); let stmts = vec![query_builder.build(&select)]; - assert_eq!(db.into_transaction_log(), Transaction::wrap(stmts)); + assert_eq!(db.into_transaction_log(), MockTransaction::wrap(stmts)); Ok(()) } @@ -345,7 +345,7 @@ mod tests { query_builder.build(select.offset(4).limit(2)), ]; - assert_eq!(db.into_transaction_log(), Transaction::wrap(stmts)); + assert_eq!(db.into_transaction_log(), MockTransaction::wrap(stmts)); Ok(()) } @@ -377,7 +377,7 @@ mod tests { query_builder.build(select.offset(4).limit(2)), ]; - assert_eq!(db.into_transaction_log(), Transaction::wrap(stmts)); + assert_eq!(db.into_transaction_log(), MockTransaction::wrap(stmts)); Ok(()) } } diff --git a/src/executor/query.rs b/src/executor/query.rs index 0248fa5c..10748036 100644 --- a/src/executor/query.rs +++ b/src/executor/query.rs @@ -311,7 +311,7 @@ pub trait TryGetableMany: Sized { /// ``` /// # #[cfg(all(feature = "mock", feature = "macros"))] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![vec![ @@ -326,7 +326,7 @@ pub trait TryGetableMany: Sized { /// # ]]) /// # .into_connection(); /// # - /// use sea_orm::{entity::*, query::*, tests_cfg::cake, EnumIter, DeriveIden, TryGetableMany}; + /// use sea_orm::{entity::*, query::*, tests_cfg::cake, DeriveIden, EnumIter, TryGetableMany}; /// /// #[derive(EnumIter, DeriveIden)] /// enum ResultCol { @@ -358,7 +358,7 @@ pub trait TryGetableMany: Sized { /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."name", count("cake"."id") AS "num_of_cakes" FROM "cake""#, /// vec![] diff --git a/src/executor/select.rs b/src/executor/select.rs index f4ff69d4..68984955 100644 --- a/src/executor/select.rs +++ b/src/executor/select.rs @@ -132,7 +132,7 @@ where /// ``` /// # #[cfg(all(feature = "mock", feature = "macros"))] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![vec![ @@ -171,7 +171,7 @@ where /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."name" AS "cake_name" FROM "cake""#, /// vec![] @@ -181,7 +181,7 @@ where /// /// ``` /// # #[cfg(all(feature = "mock", feature = "macros"))] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![vec![ @@ -221,7 +221,7 @@ where /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// vec![ /// r#"SELECT "cake"."name" AS "cake_name", COUNT("cake"."id") AS "num_of_cakes""#, @@ -521,7 +521,7 @@ where /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![vec![ @@ -575,7 +575,7 @@ where /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."name", count("cake"."id") AS "num_of_cakes" FROM "cake""#, /// vec![] @@ -594,7 +594,7 @@ where /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres) /// # .append_query_results(vec![vec![ @@ -642,7 +642,7 @@ where /// assert_eq!( /// db.into_transaction_log(), /// vec![ - /// Transaction::from_sql_and_values( + /// MockTransaction::from_sql_and_values( /// DbBackend::Postgres, r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, vec![] /// ), /// ]); @@ -657,7 +657,7 @@ where /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres).into_connection(); /// # @@ -679,7 +679,7 @@ where /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."id", "cake"."name" FROM "cake" WHERE "id" = $1"#, /// vec![1.into()] @@ -699,7 +699,7 @@ where /// ``` /// # #[cfg(feature = "mock")] - /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, Transaction, DbBackend}; + /// # use sea_orm::{error::*, tests_cfg::*, MockDatabase, MockTransaction, DbBackend}; /// # /// # let db = MockDatabase::new(DbBackend::Postgres).into_connection(); /// # @@ -721,7 +721,7 @@ where /// /// assert_eq!( /// db.into_transaction_log(), - /// vec![Transaction::from_sql_and_values( + /// vec![MockTransaction::from_sql_and_values( /// DbBackend::Postgres, /// r#"SELECT "cake"."id", "cake"."name" FROM "cake""#, /// vec![]