Re[2]: Создать соединение с БД из тестовой функции (rocket_db_pools)
От: zelenprog  
Дата: 18.03.25 06:55
Оценка:
SP>... Метод LogsDB::fetch() выдаст структуру LogsDB. Но надо добраться до вложенного типа. Значит надо писать
SP>
SP>let mut l_db_connection1 = l_db1.0.aquire().await.unwrap();
SP>


Проверил...
Выражение "l_db1.0.acquire().await.unwrap();" возвращает значение типа "sqlx::pool::PoolConnection<sqlx::Sqlite>".
При вызове функции "read" компилятор выдает ошибку:

error[E0308]: mismatched types
--> src\lib.rs:32:14
|
32 | read(l_db_connection1, 50);
| ---- ^^^^^^^^^^^^^^^^ expected `Connection<LogsDB>`, found `PoolConnection<Sqlite>`
| |
| arguments to this function are incorrect
|
= note: expected struct `rocket_db_pools::Connection<LogsDB>`
found struct `PoolConnection<Sqlite>`


Значит, надо еще какие-то манипуляции сделать, чтобы добраться до типа Connection<LogsDB>.

Получается, мы получили пул соединений.
Может быть теперь надо из этого пула взять одно из соединений? Или создать новое?

Z>>
Z>>struct LogsDB(sqlx::SqlitePool);
Z>>

SP>это кортеж...

Насколько я помню из документации, при использовании кортежа из одного элемента в конце надо обязательно ставить запятую.
Чтобы отличить кортеж с одним элементом от простого выражения в скобках.
Или я что-то неправильно понял?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.