Я не могу заставить дизель работать на Rust. В основе этого проекта лежит система подсчета очков, использующая postgres в качестве сервера для сохранения результатов и дизеля для доступа к postgres. Когда я определяю структуру в models.rs (с именем Score
), я получаю эту ошибку:
error[E0433]: failed to resolve: use of undeclared type or module `scores`
--> src/models.rs:7:16
|
7 | #[table_name = "scores"]
| ^^^^^^^^ use of undeclared type or module `scores`
Содержимое schema.rs:
table! {
scores (name) {
name -> Varchar,
points -> Nullable<Int4>,
subject -> Nullable<Varchar>,
}
}
Вот мой models.rs:
#[macro_use]
use diesel::*;
use diesel::sql_types::*;
use crate::schema::scores::*;
#[derive(Queryable, Insertable, QueryableByName)]
#[table_name = "scores"]
pub struct Score {
#[sql_type = "Varchar"]
name: String,
#[sql_type = "Integer"]
points: Option<i32>,
#[sql_type = "Varchar"]
subject: Option<String>,
}
Я пытаюсь добавить записи к нему, используя add_entry.rs:
use super::models::Score;
use diesel::pg::PgConnection;
use crate::schema::*;
pub fn create_score(conn: PgConnection, name: String, score: i32, subject: String) -> () {
let new_score = Score {
name: name,
points: Some(score),
subject: Some(subject),
};
let ins = diesel::insert_into(scores::table)
.values(new_score)
.execute(&conn);
}
В main.rs у меня есть:
#[macro_use] extern crate diesel;
mod add_entry;
mod connect;
mod models;
mod schema;
use diesel::dsl::sql_query;
fn main() {
let conn = connect::connect();
let name = String::from("name");
let subject = String::from("subject");
add_entry::create_score(conn, name.clone(), 75, subject.clone());
//random data
list_score();
}
fn list_score() {
let connection = connect::connect();
let result = sql_query("SELECT * FROM scores");
println!("{:#?}", result);
}
А в connect.rs (для соединения с сервером) у меня есть:
use dotenv::dotenv;
use diesel::pg::PgConnection;
use diesel::prelude::*;
use std::env;
pub fn connect() -> PgConnection {
dotenv().ok();
let database_url = env::var("DATABASE_URL")
.expect("Cannot get DB URL.");
PgConnection::establish(&database_url)
.expect(&format!("Error connecting to {}", database_url));
}
Содержимое раздела зависимостей моего Автомобиля go .toml равно
dotenv = "0.9.0"
diesel = { git = "https://github.com/diesel-rs/diesel", features = ["postgres"] }
Чтобы получить эту ошибку, я запустил diesel setup
, чтобы настроить все, diesel migration run
, diesel migration redo
, diesel migration run
снова и, наконец, cargo build
.
Мой полный код можно найти в этом repository .
Что мне нужно сделать, чтобы устранить эту ошибку? Спасибо.