use Uuid and bools in our generated types

This commit is contained in:
Bryan Stitt 2022-08-05 19:47:50 +00:00
parent e295307afc
commit 20384e7f2f
11 changed files with 42 additions and 40 deletions

2
Cargo.lock generated
View File

@ -1388,6 +1388,8 @@ name = "entities"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"sea-orm", "sea-orm",
"serde",
"uuid 1.1.2",
] ]
[[package]] [[package]]

View File

@ -67,6 +67,8 @@ Types for database entities are generated from a development database.
sea-orm-cli generate entity -u mysql://root:dev_web3_proxy@127.0.0.1:3306/dev_web3_proxy -o entities/src sea-orm-cli generate entity -u mysql://root:dev_web3_proxy@127.0.0.1:3306/dev_web3_proxy -o entities/src
``` ```
Then manually fix some columns: `Vec<u8>` -> `sea_orm::prelude::Uuid` and `i8` -> `bool`. Related: <https://github.com/SeaQL/sea-query/issues/375> <https://github.com/SeaQL/sea-orm/issues/924>
## Flame Graphs ## Flame Graphs
Flame graphs make finding slow code painless: Flame graphs make finding slow code painless:

View File

@ -11,3 +11,5 @@ path = "src/mod.rs"
[dependencies] [dependencies]
sea-orm = "0.9.1" sea-orm = "0.9.1"
serde = "1.0.142"
uuid = "1.1.2"

View File

@ -1,15 +1,17 @@
//! SeaORM Entity. Generated by sea-orm-codegen 0.9.1 //! SeaORM Entity. Generated by sea-orm-codegen 0.9.1
use sea_orm::entity::prelude::*; use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
use sea_orm::prelude::Uuid;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "block_list")] #[sea_orm(table_name = "block_list")]
pub struct Model { pub struct Model {
#[sea_orm(primary_key, auto_increment = false)] #[sea_orm(primary_key, auto_increment = false)]
pub uuid: Vec<u8>, pub uuid: Uuid,
#[sea_orm(unique)] #[sea_orm(unique)]
pub address: String, pub address: String,
pub description: String, pub description: Option<String>,
} }
#[derive(Copy, Clone, Debug, EnumIter)] #[derive(Copy, Clone, Debug, EnumIter)]

View File

@ -1,3 +0,0 @@
fn main() {
println!("Hello, world!");
}

View File

@ -1,8 +1,9 @@
//! SeaORM Entity. Generated by sea-orm-codegen 0.9.1 //! SeaORM Entity. Generated by sea-orm-codegen 0.9.1
use sea_orm::entity::prelude::*; use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, EnumIter, DeriveActiveEnum)] #[derive(Debug, Clone, PartialEq, EnumIter, DeriveActiveEnum, Serialize, Deserialize)]
#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "role")] #[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "role")]
pub enum Role { pub enum Role {
#[sea_orm(string_value = "owner")] #[sea_orm(string_value = "owner")]

View File

@ -2,16 +2,18 @@
use super::sea_orm_active_enums::Role; use super::sea_orm_active_enums::Role;
use sea_orm::entity::prelude::*; use sea_orm::entity::prelude::*;
use sea_orm::prelude::Uuid;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "secondary_user")] #[sea_orm(table_name = "secondary_user")]
pub struct Model { pub struct Model {
#[sea_orm(primary_key, auto_increment = false)] #[sea_orm(primary_key, auto_increment = false)]
pub uuid: Vec<u8>, pub uuid: Uuid,
pub user_id: Vec<u8>, pub user_id: Uuid,
pub address: String, pub address: String,
pub description: String, pub description: Option<String>,
pub email: String, pub email: Option<String>,
pub role: Role, pub role: Role,
} }

View File

@ -1,15 +1,17 @@
//! SeaORM Entity. Generated by sea-orm-codegen 0.9.1 //! SeaORM Entity. Generated by sea-orm-codegen 0.9.1
use sea_orm::entity::prelude::*; use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
use sea_orm::prelude::Uuid;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "user")] #[sea_orm(table_name = "user")]
pub struct Model { pub struct Model {
#[sea_orm(primary_key, auto_increment = false)] #[sea_orm(primary_key, auto_increment = false)]
pub uuid: Vec<u8>, pub uuid: Uuid,
#[sea_orm(unique)] #[sea_orm(unique)]
pub address: String, pub address: String,
pub description: String, pub description: Option<String>,
pub email: Option<String>, pub email: Option<String>,
} }

View File

@ -1,18 +1,20 @@
//! SeaORM Entity. Generated by sea-orm-codegen 0.9.1 //! SeaORM Entity. Generated by sea-orm-codegen 0.9.1
use sea_orm::entity::prelude::*; use sea_orm::entity::prelude::*;
use sea_orm::prelude::Uuid;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] #[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "user_keys")] #[sea_orm(table_name = "user_keys")]
pub struct Model { pub struct Model {
#[sea_orm(primary_key, auto_increment = false)] #[sea_orm(primary_key, auto_increment = false)]
pub uuid: Vec<u8>, pub uuid: Uuid,
pub user_uuid: Vec<u8>, pub user_uuid: Uuid,
#[sea_orm(unique)] #[sea_orm(unique)]
pub api_key: String, pub api_key: Uuid,
pub description: String, pub description: Option<String>,
pub private_txs: i8, pub private_txs: bool,
pub active: i8, pub active: bool,
} }
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]

View File

@ -24,7 +24,7 @@ impl MigrationTrait for Migration {
.not_null() .not_null()
.unique_key(), .unique_key(),
) )
.col(ColumnDef::new(User::Description).string().not_null()) .col(ColumnDef::new(User::Description).string())
.col(ColumnDef::new(User::Email).string()) .col(ColumnDef::new(User::Email).string())
.to_owned(), .to_owned(),
) )
@ -48,12 +48,8 @@ impl MigrationTrait for Migration {
.string_len(42) .string_len(42)
.not_null(), .not_null(),
) )
.col( .col(ColumnDef::new(SecondaryUser::Description).string())
ColumnDef::new(SecondaryUser::Description) .col(ColumnDef::new(SecondaryUser::Email).string())
.string()
.not_null(),
)
.col(ColumnDef::new(SecondaryUser::Email).string().not_null())
.col( .col(
ColumnDef::new(SecondaryUser::Role) ColumnDef::new(SecondaryUser::Role)
.enumeration("role", ["owner", "admin", "collaborator"]) .enumeration("role", ["owner", "admin", "collaborator"])
@ -87,7 +83,7 @@ impl MigrationTrait for Migration {
.not_null() .not_null()
.unique_key(), .unique_key(),
) )
.col(ColumnDef::new(BlockList::Description).string().not_null()) .col(ColumnDef::new(BlockList::Description).string())
.to_owned(), .to_owned(),
) )
.await?; .await?;
@ -111,7 +107,7 @@ impl MigrationTrait for Migration {
.not_null() .not_null()
.unique_key(), .unique_key(),
) )
.col(ColumnDef::new(UserKeys::Description).string().not_null()) .col(ColumnDef::new(UserKeys::Description).string())
.col( .col(
ColumnDef::new(UserKeys::PrivateTxs) ColumnDef::new(UserKeys::PrivateTxs)
.boolean() .boolean()

View File

@ -1,9 +1,7 @@
use argh::FromArgs; use argh::FromArgs;
use entities::{user, user_keys}; use entities::{user, user_keys};
use ethers::prelude::Bytes;
use fstrings::{format_args_f, println_f}; use fstrings::{format_args_f, println_f};
use rand::prelude::*; use sea_orm::ActiveModelTrait;
use sea_orm::{prelude::Uuid, ActiveModelTrait};
use web3_proxy::users::new_api_key; use web3_proxy::users::new_api_key;
#[derive(Debug, FromArgs)] #[derive(Debug, FromArgs)]
@ -56,14 +54,10 @@ impl CreateUserSubCommand {
println_f!("user: {u:?}"); println_f!("user: {u:?}");
// TODO: use chacha20? // create a key for the new user
let api_key = new_api_key();
// TODO: create a key, too
// TODO: why are active and private_txs ints instead of bools?
let uk = user_keys::ActiveModel { let uk = user_keys::ActiveModel {
user_uuid: sea_orm::Set(u.uuid), user_uuid: sea_orm::Set(u.uuid),
// api_key: api_key, api_key: sea_orm::Set(new_api_key()),
..Default::default() ..Default::default()
}; };