Update entity and migration test
This commit is contained in:
parent
0de65e6350
commit
1324fb3b70
8 changed files with 299 additions and 5 deletions
208
Cargo.lock
generated
208
Cargo.lock
generated
|
@ -200,6 +200,7 @@ dependencies = [
|
|||
"async-trait",
|
||||
"base64",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"fast_chemail",
|
||||
"fnv",
|
||||
"futures-timer",
|
||||
|
@ -453,11 +454,20 @@ version = "0.22.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
||||
|
||||
[[package]]
|
||||
name = "base64ct"
|
||||
version = "1.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
|
@ -527,6 +537,7 @@ dependencies = [
|
|||
"iana-time-zone",
|
||||
"js-sys",
|
||||
"num-traits",
|
||||
"serde",
|
||||
"wasm-bindgen",
|
||||
"windows-link",
|
||||
]
|
||||
|
@ -586,6 +597,12 @@ dependencies = [
|
|||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const-oid"
|
||||
version = "0.9.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.4"
|
||||
|
@ -686,6 +703,17 @@ dependencies = [
|
|||
"syn 2.0.100",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "der"
|
||||
version = "0.7.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
|
||||
dependencies = [
|
||||
"const-oid",
|
||||
"pem-rfc7468",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.7"
|
||||
|
@ -693,6 +721,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"const-oid",
|
||||
"crypto-common",
|
||||
"subtle",
|
||||
]
|
||||
|
@ -1465,6 +1494,9 @@ name = "lazy_static"
|
|||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||
dependencies = [
|
||||
"spin",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
|
@ -1472,6 +1504,12 @@ version = "0.2.172"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
|
||||
|
||||
[[package]]
|
||||
name = "libm"
|
||||
version = "0.2.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9627da5196e5d8ed0b0495e61e518847578da83483c37288316d9b2e03a7f72"
|
||||
|
||||
[[package]]
|
||||
name = "libsqlite3-sys"
|
||||
version = "0.30.1"
|
||||
|
@ -1611,6 +1649,43 @@ dependencies = [
|
|||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint-dig"
|
||||
version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"lazy_static",
|
||||
"libm",
|
||||
"num-integer",
|
||||
"num-iter",
|
||||
"num-traits",
|
||||
"rand",
|
||||
"smallvec",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.46"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-iter"
|
||||
version = "0.1.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.19"
|
||||
|
@ -1618,6 +1693,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"libm",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1741,6 +1817,15 @@ dependencies = [
|
|||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pem-rfc7468"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "percent-encoding"
|
||||
version = "2.3.1"
|
||||
|
@ -1815,6 +1900,27 @@ dependencies = [
|
|||
"futures-io",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkcs1"
|
||||
version = "0.7.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
|
||||
dependencies = [
|
||||
"der",
|
||||
"pkcs8",
|
||||
"spki",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkcs8"
|
||||
version = "0.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
|
||||
dependencies = [
|
||||
"der",
|
||||
"spki",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
version = "0.3.32"
|
||||
|
@ -2010,6 +2116,26 @@ dependencies = [
|
|||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rsa"
|
||||
version = "0.9.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b"
|
||||
dependencies = [
|
||||
"const-oid",
|
||||
"digest",
|
||||
"num-bigint-dig",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
"pkcs1",
|
||||
"pkcs8",
|
||||
"rand_core",
|
||||
"signature",
|
||||
"spki",
|
||||
"subtle",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.24"
|
||||
|
@ -2121,6 +2247,7 @@ checksum = "21e61af841881c137d4bc8e0d8411cee9168548b404f9e4788e8af7e8f94bd4e"
|
|||
dependencies = [
|
||||
"async-stream",
|
||||
"async-trait",
|
||||
"chrono",
|
||||
"futures-util",
|
||||
"log",
|
||||
"ouroboros",
|
||||
|
@ -2188,6 +2315,7 @@ version = "0.32.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d99447c24da0cded00089e2021e1624af90878c65f7534319448d01da3df869d"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"inherent",
|
||||
"ordered-float",
|
||||
"sea-query-derive",
|
||||
|
@ -2199,6 +2327,7 @@ version = "0.7.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"sea-query",
|
||||
"sqlx",
|
||||
]
|
||||
|
@ -2317,6 +2446,17 @@ dependencies = [
|
|||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"cpufeatures",
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.10.8"
|
||||
|
@ -2343,6 +2483,16 @@ version = "1.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||
|
||||
[[package]]
|
||||
name = "signature"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
|
||||
dependencies = [
|
||||
"digest",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.9"
|
||||
|
@ -2380,6 +2530,16 @@ dependencies = [
|
|||
"lock_api",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "spki"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
|
||||
dependencies = [
|
||||
"base64ct",
|
||||
"der",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx"
|
||||
version = "0.8.5"
|
||||
|
@ -2388,6 +2548,7 @@ checksum = "f3c3a85280daca669cfd3bcb68a337882a8bc57ec882f72c5d13a430613a738e"
|
|||
dependencies = [
|
||||
"sqlx-core",
|
||||
"sqlx-macros",
|
||||
"sqlx-mysql",
|
||||
"sqlx-postgres",
|
||||
"sqlx-sqlite",
|
||||
]
|
||||
|
@ -2400,6 +2561,7 @@ checksum = "f743f2a3cea30a58cd479013f75550e879009e3a02f616f18ca699335aa248c3"
|
|||
dependencies = [
|
||||
"base64",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"crc",
|
||||
"crossbeam-queue",
|
||||
"either",
|
||||
|
@ -2459,6 +2621,7 @@ dependencies = [
|
|||
"serde_json",
|
||||
"sha2",
|
||||
"sqlx-core",
|
||||
"sqlx-mysql",
|
||||
"sqlx-postgres",
|
||||
"sqlx-sqlite",
|
||||
"syn 2.0.100",
|
||||
|
@ -2467,6 +2630,49 @@ dependencies = [
|
|||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-mysql"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0afdd3aa7a629683c2d750c2df343025545087081ab5942593a5288855b1b7a7"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"crc",
|
||||
"digest",
|
||||
"dotenvy",
|
||||
"either",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-util",
|
||||
"generic-array",
|
||||
"hex",
|
||||
"hkdf",
|
||||
"hmac",
|
||||
"itoa",
|
||||
"log",
|
||||
"md-5",
|
||||
"memchr",
|
||||
"once_cell",
|
||||
"percent-encoding",
|
||||
"rand",
|
||||
"rsa",
|
||||
"serde",
|
||||
"sha1",
|
||||
"sha2",
|
||||
"smallvec",
|
||||
"sqlx-core",
|
||||
"stringprep",
|
||||
"thiserror 2.0.12",
|
||||
"tracing",
|
||||
"whoami",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-postgres"
|
||||
version = "0.8.5"
|
||||
|
@ -2477,6 +2683,7 @@ dependencies = [
|
|||
"base64",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
"chrono",
|
||||
"crc",
|
||||
"dotenvy",
|
||||
"etcetera",
|
||||
|
@ -2511,6 +2718,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "c26083e9a520e8eb87a06b12347679b142dc2ea29e6e409f805644a7a979a5bc"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"chrono",
|
||||
"flume",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
|
|
|
@ -4,7 +4,7 @@ members = ["dpts-*"]
|
|||
[workspace.dependencies]
|
||||
dpts-core = {path = "dpts-core"}
|
||||
dpts-migration = {path = "dpts-migration"}
|
||||
chrono = "0.4"
|
||||
chrono = {version = "0.4", features = ["serde"]}
|
||||
clap = "4.5"
|
||||
dotenv = "0.15.0"
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ repository.workspace = true
|
|||
[dependencies]
|
||||
dpts-migration = { workspace = true }
|
||||
anyhow = "1.0"
|
||||
async-graphql = "7.0"
|
||||
async-graphql = {version = "7.0", features = ["chrono"]}
|
||||
axum = "0.8"
|
||||
chrono = {workspace = true}
|
||||
clap = {workspace = true}
|
||||
|
@ -25,5 +25,6 @@ features = [
|
|||
"debug-print",
|
||||
"runtime-tokio-native-tls",
|
||||
"sqlx-sqlite",
|
||||
"with-chrono",
|
||||
]
|
||||
default-features = false
|
||||
|
|
|
@ -2,3 +2,27 @@ mod record_detail;
|
|||
mod record_header;
|
||||
mod record_tag;
|
||||
mod user;
|
||||
|
||||
pub use user::{
|
||||
ActiveModel as UserActiveModel,
|
||||
Entity as UserEntity,
|
||||
Model as UserModel,
|
||||
};
|
||||
|
||||
pub use record_detail::{
|
||||
ActiveModel as RecordDetailActiveModel,
|
||||
Entity as RecordDetailEntity,
|
||||
Model as RecordDetailModel,
|
||||
};
|
||||
|
||||
pub use record_header::{
|
||||
ActiveModel as RecordHeaderActiveModel,
|
||||
Entity as RecordHeaderEntity,
|
||||
Model as RecordHeaderModel,
|
||||
};
|
||||
|
||||
pub use record_tag::{
|
||||
ActiveModel as RecordTagActiveModel,
|
||||
Entity as RecordTagEntity,
|
||||
Model as RecordTagModel,
|
||||
};
|
|
@ -13,6 +13,10 @@ pub struct Model {
|
|||
#[serde(skip_deserializing)]
|
||||
pub user_id: i32,
|
||||
pub comment: String,
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
pub updated_at: DateTimeWithTimeZone,
|
||||
#[sea_orm(indexed)]
|
||||
pub recorded_at: DateTimeWithTimeZone,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)]
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use async_graphql::*;
|
||||
use chrono::{DateTime, FixedOffset,};
|
||||
use sea_orm::entity::prelude::*;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
@ -11,6 +12,9 @@ pub struct Model {
|
|||
pub id: i32,
|
||||
#[sea_orm(unique, indexed)]
|
||||
pub login_name: String,
|
||||
pub password_hash: String,
|
||||
pub created_at: DateTimeWithTimeZone,
|
||||
pub updated_at: DateTimeWithTimeZone,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)]
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
use core::time::Duration;
|
||||
use sea_orm::{ConnectOptions, Database};
|
||||
use std::time::Duration;
|
||||
use chrono::{offset, FixedOffset, Local, TimeZone};
|
||||
use sea_orm::{entity::*, query::*, ConnectOptions, Database};
|
||||
use dpts_migration::{Migrator, MigratorTrait};
|
||||
use dpts_core::entity::*;
|
||||
|
||||
#[tokio::test]
|
||||
async fn main() {
|
||||
|
@ -16,6 +18,53 @@ async fn main() {
|
|||
//.set_schema_search_path("my_schema"); // Setting default PostgreSQL schema
|
||||
let db= Database::connect(opt).await.unwrap();
|
||||
Migrator::fresh(&db).await.unwrap();
|
||||
|
||||
let local_date_time = Local::now();
|
||||
let offset_date_time = local_date_time.with_timezone(local_date_time.offset());
|
||||
|
||||
let user = UserActiveModel{
|
||||
login_name: Set("admin".to_owned()),
|
||||
password_hash: Set("admin".to_owned()),
|
||||
created_at: Set(offset_date_time),
|
||||
updated_at: Set(offset_date_time),
|
||||
..Default::default()
|
||||
}.insert(&db)
|
||||
.await.unwrap();
|
||||
|
||||
|
||||
let record_tag = RecordTagActiveModel{
|
||||
user_id: Set(user.id),
|
||||
name: Set("test".to_owned()),
|
||||
..Default::default()
|
||||
}.insert(&db)
|
||||
.await.unwrap();
|
||||
|
||||
let record_header = RecordHeaderActiveModel{
|
||||
user_id: Set(user.id),
|
||||
created_at: Set(offset_date_time),
|
||||
updated_at: Set(offset_date_time),
|
||||
recorded_at: Set(offset_date_time),
|
||||
comment: Set("".to_owned()),
|
||||
..Default::default()
|
||||
}.insert(&db)
|
||||
.await.unwrap();
|
||||
|
||||
RecordDetailActiveModel {
|
||||
record_header_id: Set(record_header.id),
|
||||
record_tag_id: Set(record_tag.id),
|
||||
count: Set(1),
|
||||
..Default::default()
|
||||
}.insert(&db)
|
||||
.await.unwrap();
|
||||
RecordDetailActiveModel {
|
||||
record_header_id: Set(record_header.id),
|
||||
record_tag_id: Set(record_tag.id),
|
||||
count: Set(2),
|
||||
..Default::default()
|
||||
}.insert(&db)
|
||||
.await.unwrap();
|
||||
|
||||
|
||||
Migrator::reset(&db).await.unwrap();
|
||||
db.close().await.unwrap();
|
||||
}
|
|
@ -65,7 +65,7 @@ impl MigrationTrait for Migration {
|
|||
.col(pk_auto(RecordDetail::Id))
|
||||
.col(integer(RecordDetail::RecordHeaderId))
|
||||
.col(integer(RecordDetail::RecordTagId))
|
||||
.col(string(RecordDetail::Count))
|
||||
.col(integer(RecordDetail::Count))
|
||||
.foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("FK_RecordDetail_RecordHeader")
|
||||
|
@ -117,6 +117,10 @@ impl MigrationTrait for Migration {
|
|||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
// Replace the sample below with your own migration scripts
|
||||
manager.drop_index(Index::drop().name("IDX_User_LoginName").to_owned()).await?;
|
||||
manager.drop_index(Index::drop().name("IDX_RecordHeader_RecordedAt").to_owned()).await?;
|
||||
manager.drop_index(Index::drop().name("IDX_RecordTag_Name").to_owned()).await?;
|
||||
|
||||
|
||||
manager.drop_table(
|
||||
Table::drop().table(RecordDetail::Table).to_owned()
|
||||
|
|
Loading…
Add table
Reference in a new issue