diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index da2b227a6..53e03410b 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -15,7 +15,7 @@ jobs: - name: Start database run: docker compose -f dev.docker-compose.yml up -d - name: Migrate database - run: cd editor-server && cargo prisma migrate dev --skip-generate --name init + run: cd editor-server && cargo seaorm migrate - name: Build and clippy check run: cargo clippy --manifest-path ./editor-server/Cargo.toml - name: fmt check @@ -24,7 +24,7 @@ jobs: run: cargo test --test '*' --manifest-path ./editor-server/Cargo.toml file-server-test: runs-on: ubuntu-latest - steps: + steps: - uses: actions/checkout@v4 - name: build test and clippy check run: cargo clippy --manifest-path ./file-server/Cargo.toml diff --git a/README.md b/README.md index 1c4dfaf11..9b808e566 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ migrate the database ```sh # in Lightdance-Editor/editor-server -cargo prisma migrate dev --skip-generate --name init +cargo seaorm migrate ``` #### Install the dependencies @@ -139,7 +139,7 @@ migrate the database ```sh # in Lightdance-Editor/editor-server -cargo prisma migrate dev --skip-generate --name init +cargo seaorm migrate ``` Start all services diff --git a/editor-server/.cargo/config.toml b/editor-server/.cargo/config.toml index 1f5bf2d11..c927343c7 100644 --- a/editor-server/.cargo/config.toml +++ b/editor-server/.cargo/config.toml @@ -1,2 +1,2 @@ [alias] -prisma = "run -p prisma --" +seaorm = "run -p seaorm --" diff --git a/editor-server/Cargo.lock b/editor-server/Cargo.lock index 3e1099971..1ebb6b349 100644 --- a/editor-server/Cargo.lock +++ b/editor-server/Cargo.lock @@ -33,28 +33,25 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.15", + "getrandom", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] -name = "aho-corasick" -version = "1.1.3" +name = "aliasable" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" [[package]] name = "allocator-api2" @@ -78,10 +75,54 @@ dependencies = [ ] [[package]] -name = "anyhow" -version = "1.0.95" +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +dependencies = [ + "anstyle", + "once_cell", + "windows-sys 0.59.0", +] [[package]] name = "arc-swap" @@ -108,16 +149,61 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "ascii" +name = "ascii_utils" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +checksum = "71938f30533e4d95a6d17aa530939da3842c2ab6f4f84b9dae68447e4129f74a" [[package]] -name = "ascii_utils" -version = "0.9.3" +name = "async-channel" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71938f30533e4d95a6d17aa530939da3842c2ab6f4f84b9dae68447e4129f74a" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.3.0", + "futures-lite 2.6.0", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io 2.4.0", + "async-lock 3.4.0", + "blocking", + "futures-lite 2.6.0", + "once_cell", +] [[package]] name = "async-graphql" @@ -130,15 +216,15 @@ dependencies = [ "async-graphql-value", "async-stream", "async-trait", - "base64 0.22.1", + "base64", "bytes", "fast_chemail", "fnv", "futures-timer", "futures-util", "handlebars", - "http 1.2.0", - "indexmap 2.7.1", + "http", + "indexmap", "mime", "multer", "num-traits", @@ -207,11 +293,96 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6266ea7ab3ce41585e16caa0e1e8d97de37827227950820fdab6b69d9c09a63a" dependencies = [ "bytes", - "indexmap 2.7.1", + "indexmap", "serde", "serde_json", ] +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.28", + "slab", + "socket2 0.4.10", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock 3.4.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.6.0", + "parking", + "polling 3.7.4", + "rustix 0.38.44", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io 2.4.0", + "async-lock 3.4.0", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 2.6.0", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -234,6 +405,12 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + [[package]] name = "async-trait" version = "0.1.85" @@ -254,15 +431,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "atomic-shim" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cd4b51d303cf3501c301e8125df442128d3c6d7c69f71b27833d253de47e77" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "atomic-waker" version = "1.1.2" @@ -283,14 +451,14 @@ checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" dependencies = [ "axum-core", "axum-macros", - "base64 0.22.1", + "base64", "bytes", "form_urlencoded", "futures-util", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.5.2", + "hyper", "hyper-util", "itoa", "matchit", @@ -305,7 +473,7 @@ dependencies = [ "serde_path_to_error", "serde_urlencoded", "sha1", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tokio-tungstenite", "tower", @@ -322,13 +490,13 @@ checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" dependencies = [ "bytes", "futures-util", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.2", + "sync_wrapper", "tower-layer", "tower-service", "tracing", @@ -345,8 +513,8 @@ dependencies = [ "bytes", "cookie", "futures-util", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", @@ -382,40 +550,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "base-x" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" - -[[package]] -name = "base36" -version = "0.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9c26bddc1271f7112e5ec797e8eeba6de2de211c1488e506b9500196dbf77c5" -dependencies = [ - "base-x", - "failure", -] - -[[package]] -name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -434,41 +568,25 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b1866ecef4f2d06a0bb77880015fdf2b89e25a1c2e5addacb87e459c86dc67e" dependencies = [ - "base64 0.22.1", + "base64", "blowfish", - "getrandom 0.2.15", + "getrandom", "subtle", "zeroize", ] [[package]] name = "bigdecimal" -version = "0.3.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +checksum = "7f31f3af01c5c65a07985c804d3366560e6fa7883d640a122819b14ec327482c" dependencies = [ + "autocfg", + "libm", "num-bigint", "num-integer", "num-traits", -] - -[[package]] -name = "bindgen" -version = "0.59.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" -dependencies = [ - "bitflags 1.3.2", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", + "serde", ] [[package]] @@ -516,6 +634,19 @@ dependencies = [ "generic-array", ] +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite 2.6.0", + "piper", +] + [[package]] name = "blowfish" version = "0.9.1" @@ -564,21 +695,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" -[[package]] -name = "builtin-psl-connectors" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "connection-string", - "either", - "enumflags2", - "indoc", - "lsp-types", - "once_cell", - "psl-core", - "regex", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -633,15 +749,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -662,10 +769,8 @@ checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", - "js-sys", "num-traits", "serde", - "wasm-bindgen", "windows-targets 0.52.6", ] @@ -680,48 +785,60 @@ dependencies = [ ] [[package]] -name = "clang-sys" -version = "1.8.1" +name = "clap" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" dependencies = [ - "glob", - "libc", - "libloading", + "clap_builder", + "clap_derive", ] [[package]] -name = "cmake" -version = "0.1.52" +name = "clap_builder" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" dependencies = [ - "cc", + "anstream", + "anstyle", + "clap_lex", + "strsim", ] [[package]] -name = "colored" -version = "2.2.0" +name = "clap_derive" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ - "lazy_static", - "windows-sys 0.59.0", + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.96", ] [[package]] -name = "combine" -version = "3.8.1" +name = "clap_lex" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "cmake" +version = "0.1.52" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", + "cc", ] +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + [[package]] name = "combine" version = "4.6.7" @@ -745,15 +862,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "connection-string" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97faeec45f49581c458f8bf81992c5e3ec17d82cda99f59d3cea14eff62698d" -dependencies = [ - "wasm-bindgen", -] - [[package]] name = "console" version = "0.15.10" @@ -773,12 +881,6 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" -[[package]] -name = "convert_case" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" - [[package]] name = "cookie" version = "0.18.1" @@ -840,115 +942,38 @@ dependencies = [ ] [[package]] -name = "crossbeam" -version = "0.8.4" +name = "crossbeam-queue" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-epoch", - "crossbeam-queue", "crossbeam-utils", ] [[package]] -name = "crossbeam-channel" -version = "0.5.14" +name = "crossbeam-utils" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" -dependencies = [ - "crossbeam-utils", -] +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] -name = "crossbeam-deque" -version = "0.8.6" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", + "generic-array", + "typenum", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "darling" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cuid" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fe01ebbba358b9af4850d1a2b16d45f765137398e34134643790f19dc935a0" -dependencies = [ - "base36", - "cuid-util", - "cuid2", - "hostname", - "num", - "once_cell", - "rand 0.8.5", - "uuid", -] - -[[package]] -name = "cuid-util" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d59a706635108a7e8eaae7ec8e6154504fafa4a415ef38690d94fccea051757" - -[[package]] -name = "cuid2" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc4ec2422180444acb04e5dda013369c9860fe66e8f558aa8c3f265ad195d3" -dependencies = [ - "cuid-util", - "getrandom 0.2.15", - "num", - "rand 0.8.5", - "sha3", - "web-time", -] - -[[package]] -name = "darling" -version = "0.20.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" -dependencies = [ - "darling_core", - "darling_macro", + "darling_core", + "darling_macro", ] [[package]] @@ -1000,6 +1025,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", + "serde", ] [[package]] @@ -1013,16 +1039,6 @@ dependencies = [ "syn 2.0.96", ] -[[package]] -name = "diagnostics" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "colored", - "indoc", - "pest", -] - [[package]] name = "digest" version = "0.10.7" @@ -1035,26 +1051,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -1066,39 +1062,6 @@ dependencies = [ "syn 2.0.96", ] -[[package]] -name = "dml" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "chrono", - "cuid", - "either", - "enumflags2", - "indoc", - "prisma-value", - "psl-core", - "schema-ast", - "serde", - "serde_json", - "uuid", -] - -[[package]] -name = "dmmf" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "bigdecimal", - "indexmap 1.9.3", - "prisma-models", - "psl", - "schema", - "schema-builder", - "serde", - "serde_json", -] - [[package]] name = "dotenv" version = "0.15.0" @@ -1127,12 +1090,13 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.2.0", + "http", "indicatif", - "itertools 0.14.0", + "itertools", "once_cell", "redis", - "reqwest 0.12.12", + "reqwest", + "sea-orm", "serde", "serde_json", "slab", @@ -1170,32 +1134,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "endian-type" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" - -[[package]] -name = "enumflags2" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" -dependencies = [ - "enumflags2_derive", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.96", -] - [[package]] name = "equivalent" version = "1.0.1" @@ -1223,6 +1161,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "event-listener" version = "5.4.0" @@ -1235,25 +1179,13 @@ dependencies = [ ] [[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" +name = "event-listener-strategy" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure 0.12.6", + "event-listener 5.4.0", + "pin-project-lite", ] [[package]] @@ -1267,15 +1199,18 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] [[package]] -name = "fixedbitset" -version = "0.1.9" +name = "fastrand" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "flate2" @@ -1335,62 +1270,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "frunk" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874b6a17738fc273ec753618bac60ddaeac48cb1d7684c3e7bd472e57a28b817" -dependencies = [ - "frunk_core", - "frunk_derives", - "frunk_proc_macros", - "serde", -] - -[[package]] -name = "frunk_core" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3529a07095650187788833d585c219761114005d5976185760cf794d265b6a5c" -dependencies = [ - "serde", -] - -[[package]] -name = "frunk_derives" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99b8b3c28ae0e84b604c75f721c21dc77afb3706076af5e8216d15fd1deaae3" -dependencies = [ - "frunk_proc_macro_helpers", - "quote", - "syn 2.0.96", -] - -[[package]] -name = "frunk_proc_macro_helpers" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a956ef36c377977e512e227dcad20f68c2786ac7a54dacece3746046fea5ce" -dependencies = [ - "frunk_core", - "proc-macro2", - "quote", - "syn 2.0.96", -] - -[[package]] -name = "frunk_proc_macros" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e86c2c9183662713fea27ea527aad20fb15fee635a71081ff91bf93df4dc51" -dependencies = [ - "frunk_core", - "frunk_proc_macro_helpers", - "quote", - "syn 2.0.96", -] - [[package]] name = "funty" version = "2.0.0" @@ -1447,7 +1326,7 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.3", + "parking_lot", ] [[package]] @@ -1456,6 +1335,34 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand 2.3.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -1513,17 +1420,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.15" @@ -1531,10 +1427,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", - "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", + "wasi", ] [[package]] @@ -1550,32 +1444,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] -name = "graphql-parser" +name = "gloo-timers" version = "0.3.0" -source = "git+https://github.com/prisma/graphql-parser#6a3f58bd879065588e710cb02b5bd30c1ce182c3" -dependencies = [ - "combine 3.8.1", - "indexmap 1.9.3", - "thiserror 1.0.69", -] - -[[package]] -name = "h2" -version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ - "bytes", - "fnv", + "futures-channel", "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.7.1", - "slab", - "tokio", - "tokio-util", - "tracing", + "js-sys", + "wasm-bindgen", ] [[package]] @@ -1589,8 +1466,8 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.2.0", - "indexmap 2.7.1", + "http", + "indexmap", "slab", "tokio", "tokio-util", @@ -1611,15 +1488,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -1649,6 +1517,12 @@ dependencies = [ "hashbrown 0.15.2", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -1661,6 +1535,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -1694,22 +1574,11 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "hostname" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c7c7c8ac16c798734b8a24560c1362120597c40d5e1459f09498f8f6c8f2ba" -dependencies = [ - "cfg-if", - "libc", - "windows", -] - [[package]] name = "http" -version = "0.2.12" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1717,35 +1586,13 @@ dependencies = [ ] [[package]] -name = "http" -version = "1.2.0" +name = "http-body" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.2.0", + "http", ] [[package]] @@ -1756,8 +1603,8 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] @@ -1773,30 +1620,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.8", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.5.2" @@ -1806,9 +1629,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", - "http 1.2.0", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -1825,8 +1648,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", - "http 1.2.0", - "hyper 1.5.2", + "http", + "hyper", "hyper-util", "rustls", "rustls-pki-types", @@ -1835,19 +1658,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls 0.3.1", -] - [[package]] name = "hyper-tls" version = "0.6.0" @@ -1856,11 +1666,11 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.2", + "hyper", "hyper-util", "native-tls", "tokio", - "tokio-native-tls 0.3.1", + "tokio-native-tls", "tower-service", ] @@ -1873,9 +1683,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "hyper 1.5.2", + "http", + "http-body", + "hyper", "pin-project-lite", "socket2 0.5.8", "tokio", @@ -2051,17 +1861,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - [[package]] name = "indexmap" version = "2.7.1" @@ -2087,10 +1886,15 @@ dependencies = [ ] [[package]] -name = "indoc" -version = "1.0.9" +name = "inherent" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" +checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] [[package]] name = "inout" @@ -2119,6 +1923,17 @@ dependencies = [ "derive_utils", ] +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -2126,13 +1941,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] -name = "itertools" -version = "0.10.5" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -2168,12 +1980,12 @@ dependencies = [ ] [[package]] -name = "keccak" -version = "0.1.5" +name = "kv-log-macro" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" dependencies = [ - "cpufeatures", + "log", ] [[package]] @@ -2185,117 +1997,18 @@ dependencies = [ "spin", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "lexical" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" -dependencies = [ - "lexical-core", -] - -[[package]] -name = "lexical-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" -dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", -] - -[[package]] -name = "lexical-parse-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" -dependencies = [ - "lexical-parse-integer", - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-parse-integer" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-util" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "lexical-write-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" -dependencies = [ - "lexical-util", - "lexical-write-integer", - "static_assertions", -] - -[[package]] -name = "lexical-write-integer" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" -dependencies = [ - "lexical-util", - "static_assertions", -] - [[package]] name = "libc" version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" -[[package]] -name = "libloading" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" -dependencies = [ - "cfg-if", - "windows-targets 0.52.6", -] - [[package]] name = "libm" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.8.0", - "libc", -] - [[package]] name = "libsqlite3-sys" version = "0.30.1" @@ -2318,10 +2031,10 @@ dependencies = [ ] [[package]] -name = "linked-hash-map" -version = "0.5.6" +name = "linux-raw-sys" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" @@ -2350,14 +2063,8 @@ name = "log" version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" - -[[package]] -name = "lru" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" dependencies = [ - "hashbrown 0.12.3", + "value-bag", ] [[package]] @@ -2366,37 +2073,6 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "lsp-types" -version = "0.91.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2368312c59425dd133cb9a327afee65be0a633a8ce471d248e2202a48f8f68ae" -dependencies = [ - "bitflags 1.3.2", - "serde", - "serde_json", - "serde_repr", - "url", -] - -[[package]] -name = "mach" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" -dependencies = [ - "libc", -] - [[package]] name = "matchers" version = "0.1.0" @@ -2429,90 +2105,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] -name = "metrics" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e52eb6380b6d2a10eb3434aec0885374490f5b82c8aaf5cd487a183c98be834" -dependencies = [ - "ahash", - "metrics-macros", -] - -[[package]] -name = "metrics" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142c53885123b68d94108295a09d4afe1a1388ed95b54d5dacd9a454753030f2" -dependencies = [ - "ahash", - "metrics-macros", -] - -[[package]] -name = "metrics-exporter-prometheus" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953cbbb6f9ba4b9304f4df79b98cdc9d14071ed93065a9fca11c00c5d9181b66" +name = "migration" +version = "0.1.0" dependencies = [ - "hyper 0.14.32", - "indexmap 1.9.3", - "ipnet", - "metrics 0.19.0", - "metrics-util 0.13.0", - "parking_lot 0.11.2", - "quanta", - "thiserror 1.0.69", + "sea-orm-migration", "tokio", - "tracing", -] - -[[package]] -name = "metrics-macros" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "metrics-util" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65a9e83b833e1d2e07010a386b197c13aa199bbd0fca5cf69bfa147972db890a" -dependencies = [ - "aho-corasick 0.7.20", - "atomic-shim", - "crossbeam-epoch", - "crossbeam-utils", - "hashbrown 0.11.2", - "indexmap 1.9.3", - "metrics 0.18.1", - "num_cpus", - "ordered-float", - "parking_lot 0.11.2", - "quanta", - "radix_trie", - "sketches-ddsketch", -] - -[[package]] -name = "metrics-util" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd1f4b69bef1e2b392b2d4a12902f2af90bb438ba4a66aa222d1023fa6561b50" -dependencies = [ - "atomic-shim", - "crossbeam-epoch", - "crossbeam-utils", - "hashbrown 0.11.2", - "metrics 0.19.0", - "num_cpus", - "parking_lot 0.11.2", - "quanta", - "sketches-ddsketch", ] [[package]] @@ -2521,12 +2118,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.8.3" @@ -2536,18 +2127,6 @@ dependencies = [ "adler2", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - [[package]] name = "mio" version = "1.0.3" @@ -2555,28 +2134,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.52.0", ] -[[package]] -name = "mobc" -version = "0.7.3" -source = "git+https://github.com/prisma/mobc?tag=1.0.6#80462c4870a2bf6aab49da15c88c021bae531da8" -dependencies = [ - "async-trait", - "futures-channel", - "futures-core", - "futures-timer", - "futures-util", - "log", - "metrics 0.18.1", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-subscriber", -] - [[package]] name = "multer" version = "3.1.0" @@ -2586,7 +2147,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 1.2.0", + "http", "httparse", "memchr", "mime", @@ -2606,13 +2167,13 @@ dependencies = [ "flate2", "io-enum", "libc", - "lru 0.12.5", - "mysql_common 0.34.1", + "lru", + "mysql_common", "named_pipe", - "pem 3.0.4", + "pem", "percent-encoding", "socket2 0.5.8", - "twox-hash 2.1.0", + "twox-hash", "url", ] @@ -2623,7 +2184,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "deb6d9ff4094f6d58d3f892fc558e60048476213dd17dcf904b62202e9029da6" dependencies = [ "darling", - "heck", + "heck 0.5.0", "num-bigint", "proc-macro-crate", "proc-macro-error2", @@ -2635,93 +2196,25 @@ dependencies = [ ] [[package]] -name = "mysql_async" -version = "0.30.0" -source = "git+https://github.com/prisma/mysql_async?rev=e3f8bdb41d57e769412f53d0f479bf67fdcc0ee3#e3f8bdb41d57e769412f53d0f479bf67fdcc0ee3" +name = "mysql_common" +version = "0.34.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34a9141e735d5bb02414a7ac03add09522466d4db65bdd827069f76ae0850e58" dependencies = [ + "base64", + "bitflags 2.8.0", + "btoi", + "byteorder", "bytes", - "crossbeam", - "flate2", - "futures-core", - "futures-sink", - "futures-util", - "lazy_static", - "lru 0.7.8", - "mio 0.8.11", - "mysql_common 0.29.2", - "native-tls", - "once_cell", - "pem 1.1.1", - "percent-encoding", - "pin-project", - "serde", - "serde_json", - "socket2 0.4.10", - "thiserror 1.0.69", - "tokio", - "tokio-native-tls 0.3.0", - "tokio-util", - "twox-hash 1.6.3", - "url", -] - -[[package]] -name = "mysql_common" -version = "0.29.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9006c95034ccf7b903d955f210469119f6c3477fc9c9e7a7845ce38a3e665c2a" -dependencies = [ - "base64 0.13.1", - "bigdecimal", - "bindgen", - "bitflags 1.3.2", - "bitvec", - "byteorder", - "bytes", - "cc", - "cmake", - "crc32fast", - "flate2", - "frunk", - "lazy_static", - "lexical", - "num-bigint", - "num-traits", - "rand 0.8.5", - "regex", - "rust_decimal", - "saturating", - "serde", - "serde_json", - "sha1", - "sha2", - "smallvec", - "subprocess", - "thiserror 1.0.69", - "time", - "uuid", -] - -[[package]] -name = "mysql_common" -version = "0.34.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34a9141e735d5bb02414a7ac03add09522466d4db65bdd827069f76ae0850e58" -dependencies = [ - "base64 0.22.1", - "bitflags 2.8.0", - "btoi", - "byteorder", - "bytes", - "cc", - "cmake", - "crc32fast", + "cc", + "cmake", + "crc32fast", "flate2", "lazy_static", "mysql-common-derive", "num-bigint", "num-traits", - "rand 0.8.5", + "rand", "regex", "saturating", "serde", @@ -2760,25 +2253,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nibble_vec" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" -dependencies = [ - "smallvec", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2789,20 +2263,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "num" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -2825,20 +2285,11 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand", "smallvec", "zeroize", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -2865,17 +2316,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-rational" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -2886,16 +2326,6 @@ dependencies = [ "libm", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "number_prefix" version = "0.4.0" @@ -2962,39 +2392,37 @@ dependencies = [ ] [[package]] -name = "opentelemetry" -version = "0.17.0" +name = "ordered-float" +version = "3.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" dependencies = [ - "async-trait", - "crossbeam-channel", - "futures-channel", - "futures-executor", - "futures-util", - "js-sys", - "lazy_static", - "percent-encoding", - "pin-project", - "rand 0.8.5", - "thiserror 1.0.69", - "tokio", + "num-traits", ] [[package]] -name = "ordered-float" -version = "2.10.1" +name = "ouroboros" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" +checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59" dependencies = [ - "num-traits", + "aliasable", + "ouroboros_macro", + "static_assertions", ] [[package]] -name = "ordermap" -version = "0.3.5" +name = "ouroboros_macro" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" +checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.96", +] [[package]] name = "overload" @@ -3008,17 +2436,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - [[package]] name = "parking_lot" version = "0.12.3" @@ -3026,21 +2443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -3051,23 +2454,11 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.8", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] -[[package]] -name = "parser-database" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "diagnostics", - "either", - "enumflags2", - "indexmap 1.9.3", - "schema-ast", -] - [[package]] name = "password-hash" version = "0.5.0" @@ -3075,32 +2466,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ "base64ct", - "rand_core 0.6.4", + "rand_core", "subtle", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - -[[package]] -name = "pem" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" -dependencies = [ - "base64 0.13.1", -] - [[package]] name = "pem" version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" dependencies = [ - "base64 0.22.1", + "base64", "serde", ] @@ -3164,16 +2540,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "petgraph" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" -dependencies = [ - "fixedbitset", - "ordermap", -] - [[package]] name = "pin-project" version = "1.1.8" @@ -3206,6 +2572,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand 2.3.0", + "futures-io", +] + [[package]] name = "pkcs1" version = "0.7.5" @@ -3233,6 +2610,37 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix 0.38.44", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "portable-atomic" version = "1.10.0" @@ -3254,87 +2662,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "prisma" -version = "0.1.0" -dependencies = [ - "dotenv", - "mysql", - "prisma-client-rust-cli", -] - -[[package]] -name = "prisma-client-rust-cli" -version = "0.6.11" -source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.11#3ac68d0052533d3ae0332d93a56a8ad169c2ee18" -dependencies = [ - "directories", - "flate2", - "http 0.2.12", - "prisma-client-rust-sdk", - "proc-macro2", - "quote", - "regex", - "reqwest 0.11.27", - "serde", - "serde_json", - "serde_path_to_error", - "syn 1.0.109", - "thiserror 1.0.69", -] - -[[package]] -name = "prisma-client-rust-sdk" -version = "0.6.11" -source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.11#3ac68d0052533d3ae0332d93a56a8ad169c2ee18" -dependencies = [ - "convert_case", - "dml", - "dmmf", - "prisma-models", - "proc-macro2", - "psl", - "query-core", - "quote", - "request-handlers", - "serde", - "serde_json", - "serde_path_to_error", - "syn 1.0.109", - "thiserror 1.0.69", -] - -[[package]] -name = "prisma-models" -version = "0.0.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "bigdecimal", - "chrono", - "itertools 0.10.5", - "once_cell", - "prisma-value", - "psl", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "prisma-value" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "base64 0.12.3", - "bigdecimal", - "chrono", - "once_cell", - "regex", - "serde", - "serde_json", - "uuid", -] - [[package]] name = "proc-macro-crate" version = "3.2.0" @@ -3376,42 +2703,23 @@ dependencies = [ ] [[package]] -name = "psl" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ - "builtin-psl-connectors", - "dml", - "psl-core", + "proc-macro2", + "quote", + "syn 2.0.96", + "version_check", + "yansi", ] [[package]] -name = "psl-core" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "bigdecimal", - "chrono", - "diagnostics", - "enumflags2", - "indoc", - "itertools 0.10.5", - "lsp-types", - "once_cell", - "parser-database", - "prisma-value", - "regex", - "schema-ast", - "serde", - "serde_json", - "url", -] - -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" dependencies = [ "ptr_meta_derive", ] @@ -3427,131 +2735,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "quaint" -version = "0.2.0-alpha.13" -source = "git+https://github.com/Brendonovich/quaint?tag=0.6.5#c502995f5e9dd4a86d80fa27f63e641bd6bbc6f2" -dependencies = [ - "async-trait", - "base64 0.12.3", - "bigdecimal", - "chrono", - "connection-string", - "futures", - "hex", - "lru-cache", - "metrics 0.18.1", - "mobc", - "mysql_async", - "num_cpus", - "percent-encoding", - "serde_json", - "sqlformat", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-core", - "url", - "uuid", -] - -[[package]] -name = "quanta" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20afe714292d5e879d8b12740aa223c6a88f118af41870e8b6196e39a02238a8" -dependencies = [ - "crossbeam-utils", - "libc", - "mach", - "once_cell", - "raw-cpuid", - "wasi 0.10.2+wasi-snapshot-preview1", - "web-sys", - "winapi", -] - -[[package]] -name = "query-connector" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "anyhow", - "async-trait", - "chrono", - "futures", - "indexmap 1.9.3", - "itertools 0.10.5", - "prisma-models", - "prisma-value", - "serde", - "serde_json", - "thiserror 1.0.69", - "user-facing-errors", - "uuid", -] - -[[package]] -name = "query-core" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "async-trait", - "base64 0.12.3", - "bigdecimal", - "chrono", - "connection-string", - "crossbeam-queue", - "cuid", - "enumflags2", - "futures", - "indexmap 1.9.3", - "itertools 0.10.5", - "lazy_static", - "lru 0.7.8", - "once_cell", - "opentelemetry", - "parking_lot 0.12.3", - "petgraph", - "pin-utils", - "prisma-models", - "prisma-value", - "psl", - "query-connector", - "query-engine-metrics", - "schema", - "schema-builder", - "serde", - "serde_json", - "sql-query-connector", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-futures", - "tracing-opentelemetry", - "tracing-subscriber", - "url", - "user-facing-errors", - "uuid", -] - -[[package]] -name = "query-engine-metrics" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "metrics 0.18.1", - "metrics-exporter-prometheus", - "metrics-util 0.12.1", - "once_cell", - "parking_lot 0.12.3", - "serde", - "serde_json", - "tracing", - "tracing-futures", - "tracing-subscriber", -] - [[package]] name = "quote" version = "1.0.38" @@ -3567,29 +2750,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "radix_trie" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" -dependencies = [ - "endian-type", - "nibble_vec", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.5" @@ -3597,18 +2757,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", ] [[package]] @@ -3618,16 +2768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -3636,25 +2777,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "raw-cpuid" -version = "10.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" -dependencies = [ - "bitflags 1.3.2", + "getrandom", ] [[package]] @@ -3665,7 +2788,7 @@ checksum = "9f89727cba9cec05cc579942321ff6dd09fe57a8b3217f52f952301efa010da5" dependencies = [ "arc-swap", "bytes", - "combine 4.6.7", + "combine", "futures-util", "itoa", "num-bigint", @@ -3679,15 +2802,6 @@ dependencies = [ "url", ] -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.5.8" @@ -3697,24 +2811,13 @@ dependencies = [ "bitflags 2.8.0", ] -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror 1.0.69", -] - [[package]] name = "regex" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ - "aho-corasick 1.1.3", + "aho-corasick", "memchr", "regex-automata 0.4.9", "regex-syntax 0.8.5", @@ -3735,7 +2838,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ - "aho-corasick 1.1.3", + "aho-corasick", "memchr", "regex-syntax 0.8.5", ] @@ -3761,86 +2864,24 @@ dependencies = [ "bytecheck", ] -[[package]] -name = "request-handlers" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "bigdecimal", - "connection-string", - "dmmf", - "futures", - "graphql-parser", - "indexmap 1.9.3", - "itertools 0.10.5", - "psl", - "query-core", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", - "url", - "user-facing-errors", -] - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls 0.3.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - [[package]] name = "reqwest" version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.7", - "http 1.2.0", - "http-body 1.0.1", + "h2", + "http", + "http-body", "http-body-util", - "hyper 1.5.2", + "hyper", "hyper-rustls", - "hyper-tls 0.6.0", + "hyper-tls", "hyper-util", "ipnet", "js-sys", @@ -3850,14 +2891,14 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.2.0", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.2", - "system-configuration 0.6.1", + "sync_wrapper", + "system-configuration", "tokio", - "tokio-native-tls 0.3.1", + "tokio-native-tls", "tower", "tower-service", "url", @@ -3875,7 +2916,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom", "libc", "spin", "untrusted", @@ -3924,7 +2965,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core 0.6.4", + "rand_core", "signature", "spki", "subtle", @@ -3941,7 +2982,7 @@ dependencies = [ "borsh", "bytes", "num-traits", - "rand 0.8.5", + "rand", "rkyv", "serde", "serde_json", @@ -3954,10 +2995,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] -name = "rustc-hash" -version = "1.1.0" +name = "rustix" +version = "0.37.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] [[package]] name = "rustix" @@ -3968,7 +3017,7 @@ dependencies = [ "bitflags 2.8.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", "windows-sys 0.59.0", ] @@ -3985,15 +3034,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - [[package]] name = "rustls-pemfile" version = "2.2.0" @@ -4039,52 +3079,178 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" [[package]] -name = "schannel" -version = "0.1.27" +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sea-bae" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f694a6ab48f14bc063cfadff30ab551d3c7e46d8f81836c51989d548f44a2a25" +dependencies = [ + "heck 0.4.1", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.96", +] + +[[package]] +name = "sea-orm" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a93194430b419da0801f404baf3b986399d6a2a4f43bc79bc96dea83f92ca43" +dependencies = [ + "async-stream", + "async-trait", + "bigdecimal", + "chrono", + "futures", + "log", + "ouroboros", + "rust_decimal", + "sea-orm-macros", + "sea-query", + "sea-query-binder", + "serde", + "serde_json", + "sqlx", + "strum", + "thiserror 1.0.69", + "time", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "sea-orm-cli" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e6e0e741bfdf434e6f6aadab156ba4d439e78c9449048698d98fa377871224a" +dependencies = [ + "chrono", + "clap", + "dotenvy", + "glob", + "regex", + "sea-schema", + "tracing", + "tracing-subscriber", + "url", +] + +[[package]] +name = "sea-orm-macros" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d19e8f22fb474a8a622eb516c46885a080535d8d559386188f525977eaad32b3" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "sea-bae", + "syn 2.0.96", + "unicode-ident", +] + +[[package]] +name = "sea-orm-migration" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0bb76ba314552ce15e3a24778cf9c116fc1225fa406e48b0a36e5a3cdbc1e21" +dependencies = [ + "async-trait", + "clap", + "dotenvy", + "futures", + "sea-orm", + "sea-orm-cli", + "sea-schema", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sea-query" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "085e94f7d7271c0393ac2d164a39994b1dff1b06bc40cd9a0da04f3d672b0fee" dependencies = [ - "windows-sys 0.59.0", + "bigdecimal", + "chrono", + "inherent", + "ordered-float", + "rust_decimal", + "sea-query-derive", + "serde_json", + "time", + "uuid", ] [[package]] -name = "schema" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" +name = "sea-query-binder" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608" dependencies = [ - "once_cell", - "prisma-models", - "psl", + "bigdecimal", + "chrono", + "rust_decimal", + "sea-query", + "serde_json", + "sqlx", + "time", + "uuid", ] [[package]] -name = "schema-ast" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" +name = "sea-query-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9834af2c4bd8c5162f00c89f1701fb6886119a88062cf76fe842ea9e232b9839" dependencies = [ - "diagnostics", - "pest", - "pest_derive", + "darling", + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.96", + "thiserror 1.0.69", ] [[package]] -name = "schema-builder" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" +name = "sea-schema" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef5dd7848c993f3789d09a2616484c72c9330cae2b048df59d8c9b8c0343e95" dependencies = [ - "itertools 0.10.5", - "lazy_static", - "once_cell", - "prisma-models", - "psl", - "schema", + "futures", + "sea-query", + "sea-schema-derive", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "sea-schema-derive" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "debdc8729c37fdbf88472f97fd470393089f997a909e535ff67c544d18cfccf0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.96", +] [[package]] name = "seahash" @@ -4092,6 +3258,17 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "seaorm" +version = "0.1.0" +dependencies = [ + "dotenv", + "migration", + "mysql", + "sea-orm", + "tokio", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -4141,7 +3318,6 @@ version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" dependencies = [ - "indexmap 2.7.1", "itoa", "memchr", "ryu", @@ -4158,17 +3334,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.96", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4209,16 +3374,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest", - "keccak", -] - [[package]] name = "sharded-slab" version = "0.1.7" @@ -4250,7 +3405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -4259,12 +3414,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" -[[package]] -name = "sketches-ddsketch" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d2ecae5fcf33b122e2e6bd520a57ccf152d2dde3b38c71039df1a6867264ee" - [[package]] name = "slab" version = "0.4.9" @@ -4322,48 +3471,6 @@ dependencies = [ "der", ] -[[package]] -name = "sql-query-connector" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "anyhow", - "async-trait", - "bigdecimal", - "chrono", - "cuid", - "futures", - "itertools 0.10.5", - "once_cell", - "opentelemetry", - "prisma-models", - "prisma-value", - "psl", - "quaint", - "query-connector", - "rand 0.7.3", - "serde", - "serde_json", - "socket2 0.4.10", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-futures", - "tracing-opentelemetry", - "user-facing-errors", - "uuid", -] - -[[package]] -name = "sqlformat" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" -dependencies = [ - "nom", - "unicode_categories", -] - [[package]] name = "sqlx" version = "0.8.3" @@ -4383,32 +3490,39 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" dependencies = [ + "async-io 1.13.0", + "async-std", + "bigdecimal", "bytes", "chrono", "crc", "crossbeam-queue", "either", - "event-listener", + "event-listener 5.4.0", "futures-core", "futures-intrusive", "futures-io", "futures-util", "hashbrown 0.15.2", "hashlink", - "indexmap 2.7.1", + "indexmap", "log", "memchr", + "native-tls", "once_cell", "percent-encoding", + "rust_decimal", "serde", "serde_json", "sha2", "smallvec", "thiserror 2.0.11", + "time", "tokio", "tokio-stream", "tracing", "url", + "uuid", ] [[package]] @@ -4430,9 +3544,10 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" dependencies = [ + "async-std", "dotenvy", "either", - "heck", + "heck 0.5.0", "hex", "once_cell", "proc-macro2", @@ -4457,7 +3572,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" dependencies = [ "atoi", - "base64 0.22.1", + "base64", + "bigdecimal", "bitflags 2.8.0", "byteorder", "bytes", @@ -4480,8 +3596,9 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand 0.8.5", + "rand", "rsa", + "rust_decimal", "serde", "sha1", "sha2", @@ -4489,7 +3606,9 @@ dependencies = [ "sqlx-core", "stringprep", "thiserror 2.0.11", + "time", "tracing", + "uuid", "whoami", ] @@ -4500,7 +3619,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" dependencies = [ "atoi", - "base64 0.22.1", + "base64", + "bigdecimal", "bitflags 2.8.0", "byteorder", "chrono", @@ -4518,8 +3638,10 @@ dependencies = [ "log", "md-5", "memchr", + "num-bigint", "once_cell", - "rand 0.8.5", + "rand", + "rust_decimal", "serde", "serde_json", "sha2", @@ -4527,7 +3649,9 @@ dependencies = [ "sqlx-core", "stringprep", "thiserror 2.0.11", + "time", "tracing", + "uuid", "whoami", ] @@ -4551,8 +3675,10 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", + "time", "tracing", "url", + "uuid", ] [[package]] @@ -4605,7 +3731,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -4650,12 +3776,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.2" @@ -4665,18 +3785,6 @@ dependencies = [ "futures-core", ] -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - [[package]] name = "synstructure" version = "0.13.1" @@ -4688,17 +3796,6 @@ dependencies = [ "syn 2.0.96", ] -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys 0.5.0", -] - [[package]] name = "system-configuration" version = "0.6.1" @@ -4707,17 +3804,7 @@ checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.8.0", "core-foundation", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "system-configuration-sys", ] [[package]] @@ -4743,10 +3830,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", - "fastrand", - "getrandom 0.2.15", + "fastrand 2.3.0", + "getrandom", "once_cell", - "rustix", + "rustix 0.38.44", "windows-sys 0.59.0", ] @@ -4874,8 +3961,8 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.3", - "parking_lot 0.12.3", + "mio", + "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2 0.5.8", @@ -4894,15 +3981,6 @@ dependencies = [ "syn 2.0.96", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.0" -source = "git+https://github.com/pimeys/tls?branch=vendored-openssl#6d0e6fc7a4bf6f290b1033764b47cb3f26d7fceb" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-native-tls" version = "0.3.1" @@ -4972,7 +4050,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.7.1", + "indexmap", "toml_datetime", "winnow", ] @@ -4986,7 +4064,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tower-layer", "tower-service", @@ -5001,8 +4079,8 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "bitflags 2.8.0", "bytes", - "http 1.2.0", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", "tower-layer", "tower-service", @@ -5066,17 +4144,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "tracing-log" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -5088,20 +4155,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-opentelemetry" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" -dependencies = [ - "once_cell", - "opentelemetry", - "tracing", - "tracing-core", - "tracing-log 0.1.4", - "tracing-subscriber", -] - [[package]] name = "tracing-subscriber" version = "0.3.19" @@ -5117,7 +4170,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.2.0", + "tracing-log", ] [[package]] @@ -5135,26 +4188,15 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.2.0", + "http", "httparse", "log", - "rand 0.8.5", + "rand", "sha1", "thiserror 2.0.11", "utf-8", ] -[[package]] -name = "twox-hash" -version = "1.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" -dependencies = [ - "cfg-if", - "rand 0.8.5", - "static_assertions", -] - [[package]] name = "twox-hash" version = "2.1.0" @@ -5206,27 +4248,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "unicode_categories" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" - -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - [[package]] name = "untrusted" version = "0.9.0" @@ -5242,31 +4263,6 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", - "serde", -] - -[[package]] -name = "user-facing-error-macros" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "user-facing-errors" -version = "0.1.0" -source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.10#c4aeef82dbae310e974d6122160c7e3b5fb6df53" -dependencies = [ - "backtrace", - "indoc", - "quaint", - "serde", - "serde_json", - "tracing", - "user-facing-error-macros", ] [[package]] @@ -5287,13 +4283,19 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "uuid" version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ - "getrandom 0.2.15", + "getrandom", "serde", ] @@ -5303,6 +4305,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "value-bag" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" + [[package]] name = "vcpkg" version = "0.2.15" @@ -5316,10 +4324,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] -name = "void" -version = "1.0.2" +name = "waker-fn" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "want" @@ -5330,18 +4338,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -5450,7 +4446,7 @@ version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "redox_syscall 0.5.8", + "redox_syscall", "wasite", ] @@ -5485,16 +4481,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core", - "windows-targets 0.52.6", -] - [[package]] name = "windows-core" version = "0.52.0" @@ -5691,16 +4677,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "write16" version = "1.0.0" @@ -5722,6 +4698,12 @@ dependencies = [ "tap", ] +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.7.5" @@ -5743,7 +4725,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.96", - "synstructure 0.13.1", + "synstructure", ] [[package]] @@ -5785,7 +4767,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.96", - "synstructure 0.13.1", + "synstructure", ] [[package]] diff --git a/editor-server/Cargo.toml b/editor-server/Cargo.toml index c694f5dd9..6ba7cefe6 100644 --- a/editor-server/Cargo.toml +++ b/editor-server/Cargo.toml @@ -5,7 +5,7 @@ version = "0.1.0" edition = "2021" [workspace] -members = ["prisma"] +members = [ "seaorm" ] [dependencies] argon2 = "0.5.3" @@ -37,6 +37,7 @@ uuid = { version = "1.12.1", features = ["v4"] } tracing = "0.1.41" tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } reqwest = { version = "0.12.12", features = ["json"] } +sea-orm = { version = "1.1.4", features = [ "sqlx-mysql", "runtime-async-std-native-tls", "macros" ] } [profile.dev] opt-level = 0 diff --git a/editor-server/README.md b/editor-server/README.md index 3633dabfa..916d5d029 100644 --- a/editor-server/README.md +++ b/editor-server/README.md @@ -1,9 +1,5 @@ # Editor Server -## When `prisma.schema` changes - -When you change the prisma schema, you need to regenerate the prisma client code and migrate the database. - ### 1. Spin up database ```sh @@ -11,11 +7,11 @@ When you change the prisma schema, you need to regenerate the prisma client code docker compose -f dev.docker-compose.yml up -d ``` -### 2. Migrate prisma +### 2. Migrate seaORM ```sh # Lightdance-Editor/editor-server -cargo prisma migrate dev --skip-generate +cargo seaorm migrate ``` ### 3. Run editor-server @@ -39,16 +35,23 @@ If you have initialized the database before, and you want to get a clean databas 1. shutdown the database with `docker compose -f dev.docker-compose.yml down` 2. Delete the `data` folder -3. Delete the `editor-server/prisma/migrations` folder -4. follow the steps above to initialize the database again +3. follow the steps above to initialize the database again -## Tip +## How to create a new migration -If you want to browse the database with a GUI +1. Create a new migration file `mXXXXXXXX_XXXXX_${File Name}.rs` under `Lightdance-Editor/editor-server/seaorm/migration/src` by typing ```sh -# Lightdance-Editor/editor-server -npx prisma studio +# Lightdance-Editor/editor-server/seaorm +sea-orm-cli migrate generate ${File Name} +``` + +2. Manually modify the file +3. Renew the `entities` directory by typing + +```sh +# Lightdance-Editor/editor-server/seaorm +sea-orm-cli generate entity -o src/entities --database-url "mysql://root:password@localhost:3306/editor" ``` ## User Management with Auth0 diff --git a/editor-server/prisma/Cargo.toml b/editor-server/prisma/Cargo.toml deleted file mode 100644 index 8c56ed9f0..000000000 --- a/editor-server/prisma/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -rust-version = "1.75.0" -name = "prisma" -version = "0.1.0" -edition = "2021" - -[dependencies] -prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust", tag = "0.6.11", features = [ - "migrations", - "mysql", -], default-features = false } -dotenv = "0.15.0" -mysql = "26.0.0" diff --git a/editor-server/prisma/schema.prisma b/editor-server/prisma/schema.prisma deleted file mode 100644 index b36a431e2..000000000 --- a/editor-server/prisma/schema.prisma +++ /dev/null @@ -1,230 +0,0 @@ -generator client { - provider = "cargo prisma" - output = "../src/prisma" - module_path = "prisma" - client_format = "folder" -} - -datasource db { - provider = "mysql" - url = env("DATABASE_URL") -} - -model Color { - id Int @id @default(autoincrement()) - name String @unique - r Int - g Int - b Int - - // relation => not in db - control_datas ControlData[] -} - -model LEDEffectState { - id Int @id @default(autoincrement()) - effect_id Int - position Int - color_id Int - alpha Int - - // relation => not in db - effect LEDEffect @relation(fields: [effect_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - - @@unique([effect_id, position]) -} - -model LEDEffect { - id Int @id @default(autoincrement()) - name String - model_id Int - part_id Int - - // relation => not in db - editing EditingLEDEffect? - control_datas ControlData[] - states LEDEffectState[] - - model Model @relation(fields: [model_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - part Part @relation(fields: [part_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - - @@unique([name, model_id, part_id]) -} - -model EditingPositionFrame { - user_id Int @id - frame_id Int? @unique - - // relation => not in db - editingFrame PositionFrame? @relation(fields: [frame_id], references: [id], onDelete: Cascade, onUpdate: Cascade) -} - -model EditingControlFrame { - user_id Int @id @unique - frame_id Int? @unique - - // relation => not in db - editing_frame ControlFrame? @relation(fields: [frame_id], references: [id], onDelete: Cascade, onUpdate: Cascade) -} - -model EditingLEDEffect { - user_id Int @id - led_effect_id Int? @unique - - // relation => not in db - editing_led_effect LEDEffect? @relation(fields: [led_effect_id], references: [id], onDelete: Cascade, onUpdate: Cascade) -} - -model Model { - id Int @id @default(autoincrement()) - name String @unique - - // relation => not in db - dancers Dancer[] - parts Part[] - led_effect LEDEffect[] -} - -model Dancer { - id Int @id @default(autoincrement()) - name String @unique - model_id Int - - // relation => not in db - model Model @relation(fields: [model_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - - position_datas PositionData[] - control_datas ControlData[] -} - -enum PartType { - LED - FIBER -} - -model Part { - id Int @id @default(autoincrement()) - model_id Int - name String - type PartType - length Int? - - // relation => not in db - model Model @relation(fields: [model_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - - control_datas ControlData[] - led_effect LEDEffect[] - - @@unique([name, model_id]) -} - -model PositionData { - // id Int @id @default(autoincrement()) - dancer_id Int - frame_id Int - x Float - y Float - z Float - rx Float @default(0) - ry Float @default(0) - rz Float @default(0) - - // relation => not in db - dancer Dancer @relation(fields: [dancer_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - frame PositionFrame @relation(fields: [frame_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - - @@id([dancer_id, frame_id]) -} - -model PositionFrame { - id Int @id @default(autoincrement()) - start Int @unique - meta_rev Int @default(0) - data_rev Int @default(0) - - // relation => not in db - editing EditingPositionFrame? - position_datas PositionData[] -} - - -model LEDBulb { - id Int @id @default(autoincrement()) - control_id Int - position Int - color_id Int - alpha Int - // relation => not in db - control_datas ControlData @relation(fields: [control_id], references: [id], onDelete: Cascade, onUpdate: Cascade) -} - - - -enum ControlDataType { - COLOR - EFFECT - LED_BULBS -} - -model ControlData { - id Int @id @default(autoincrement()) - dancer_id Int - part_id Int - frame_id Int - type ControlDataType - color_id Int? - effect_id Int? - alpha Int - - // TODO: Check if one of color_id or effect_id is not null - - // relation => not in db - part Part @relation(fields: [part_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - frame ControlFrame @relation(fields: [frame_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - dancer Dancer @relation(fields: [dancer_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - - color Color? @relation(fields: [color_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - effect LEDEffect? @relation(fields: [effect_id], references: [id], onDelete: Cascade, onUpdate: Cascade) - led_bulbs LEDBulb[] - - @@unique([dancer_id, part_id, frame_id]) -} - -model ControlFrame { - id Int @id @default(autoincrement()) - start Int @unique - fade Boolean - meta_rev Int @default(0) - data_rev Int @default(0) - - // relation => not in db - editing EditingControlFrame? - control_datas ControlData[] -} - -model EffectListData { - id Int @id @default(autoincrement()) - start Int - end Int - description String? - // dancer_data Json[] - // controlFrames Json[] - // positionFrames Json[] -} - -model Logger { - id Int @id @default(autoincrement()) - user Int - variable_value Json? - field_name String - time DateTime @default(now()) - status String - error_message Json? - result Json? -} - -model Revision { - id Int @id @default(autoincrement()) - uuid String @unique - time DateTime @default(now()) -} diff --git a/editor-server/prisma/src/main.rs b/editor-server/prisma/src/main.rs deleted file mode 100644 index 74bd64124..000000000 --- a/editor-server/prisma/src/main.rs +++ /dev/null @@ -1,22 +0,0 @@ -use std::env::{args, var}; -use std::time; - -fn main() { - let args: Vec = args().collect(); - - // Check MySQL connection when migrating - if args.len() >= 2 && args[1] == "migrate" { - dotenv::dotenv().ok(); - - let mysql_host = var("DATABASE_URL").expect("DATABASE_URL is not set"); - println!("MySQL Host: {}", mysql_host); - - while let Err(_) = mysql::Conn::new(mysql_host.as_str()) { - println!("Waiting for mysql to start..."); - std::thread::sleep(time::Duration::from_secs(1)); - } - println!("MySQL is up and running!"); - } - - prisma_client_rust_cli::run(); -} diff --git a/editor-server/seaorm/Cargo.toml b/editor-server/seaorm/Cargo.toml new file mode 100644 index 000000000..973cab60e --- /dev/null +++ b/editor-server/seaorm/Cargo.toml @@ -0,0 +1,12 @@ +[package] +rust-version = "1.75.0" +name = "seaorm" +version = "0.1.0" +edition = "2021" + +[dependencies] +dotenv = "0.15.0" +mysql = "26.0.0" +sea-orm = { version = "1.1.4", features = [ "sqlx-mysql", "runtime-async-std-native-tls", "macros" ] } +tokio = { version = "1.43.0", features = ["full"] } +migration = { path = "./migration" } diff --git a/editor-server/seaorm/migration/Cargo.toml b/editor-server/seaorm/migration/Cargo.toml new file mode 100644 index 000000000..f8c9cd5a6 --- /dev/null +++ b/editor-server/seaorm/migration/Cargo.toml @@ -0,0 +1,16 @@ +[package] +rust-version = "1.75.0" +name = "migration" +version = "0.1.0" +edition = "2021" + +[lib] +name = "migration" +path = "src/lib.rs" + +[dependencies] +tokio = { version = "1.43.0", features = ["full"] } + +[dependencies.sea-orm-migration] +version = "1.1.0" +features = [ "sqlx-mysql", "runtime-async-std-native-tls" ] diff --git a/editor-server/seaorm/migration/README.md b/editor-server/seaorm/migration/README.md new file mode 100644 index 000000000..3b438d89e --- /dev/null +++ b/editor-server/seaorm/migration/README.md @@ -0,0 +1,41 @@ +# Running Migrator CLI + +- Generate a new migration file + ```sh + cargo run -- generate MIGRATION_NAME + ``` +- Apply all pending migrations + ```sh + cargo run + ``` + ```sh + cargo run -- up + ``` +- Apply first 10 pending migrations + ```sh + cargo run -- up -n 10 + ``` +- Rollback last applied migrations + ```sh + cargo run -- down + ``` +- Rollback last 10 applied migrations + ```sh + cargo run -- down -n 10 + ``` +- Drop all tables from the database, then reapply all migrations + ```sh + cargo run -- fresh + ``` +- Rollback all applied migrations, then reapply all migrations + ```sh + cargo run -- refresh + ``` +- Rollback all applied migrations + ```sh + cargo run -- reset + ``` +- Check the status of all migrations + ```sh + cargo run -- status + ``` diff --git a/editor-server/seaorm/migration/src/lib.rs b/editor-server/seaorm/migration/src/lib.rs new file mode 100644 index 000000000..e28e56aca --- /dev/null +++ b/editor-server/seaorm/migration/src/lib.rs @@ -0,0 +1,12 @@ +pub use sea_orm_migration::prelude::*; + +pub struct Migrator; + +#[async_trait::async_trait] +impl MigratorTrait for Migrator { + fn migrations() -> Vec> { + vec![Box::new(m20250208_105910_create_table::Migration)] + } +} + +mod m20250208_105910_create_table; diff --git a/editor-server/seaorm/migration/src/m20250208_105910_create_table.rs b/editor-server/seaorm/migration/src/m20250208_105910_create_table.rs new file mode 100644 index 000000000..2a8dfb8a9 --- /dev/null +++ b/editor-server/seaorm/migration/src/m20250208_105910_create_table.rs @@ -0,0 +1,808 @@ +use sea_orm_migration::prelude::*; +use sea_query::{Alias, Expr}; + +#[derive(DeriveMigrationName)] +pub struct Migration; + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + let mut index_color_name = Index::create().unique().col(Color::Name).to_owned(); + manager + .create_table( + Table::create() + .table(Color::Table) + .if_not_exists() + .col( + ColumnDef::new(Color::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(Color::Name).string().not_null()) + .col(ColumnDef::new(Color::R).integer().not_null()) + .col(ColumnDef::new(Color::G).integer().not_null()) + .col(ColumnDef::new(Color::B).integer().not_null()) + .index(&mut index_color_name) + .to_owned(), + ) + .await?; + + let mut index_control_frame_start = + Index::create().unique().col(ControlFrame::Start).to_owned(); + manager + .create_table( + Table::create() + .table(ControlFrame::Table) + .if_not_exists() + .col( + ColumnDef::new(ControlFrame::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(ControlFrame::Start).integer().not_null()) + .col(ColumnDef::new(ControlFrame::Fade).boolean().not_null()) + .col( + ColumnDef::new(ControlFrame::MetaRev) + .integer() + .not_null() + .default(0), + ) + .col( + ColumnDef::new(ControlFrame::DataRev) + .integer() + .not_null() + .default(0), + ) + .index(&mut index_control_frame_start) + .to_owned(), + ) + .await?; + + let mut index_position_frame_start = Index::create() + .unique() + .col(PositionFrame::Start) + .to_owned(); + manager + .create_table( + Table::create() + .table(PositionFrame::Table) + .if_not_exists() + .col( + ColumnDef::new(PositionFrame::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(PositionFrame::Start).integer().not_null()) + .col( + ColumnDef::new(PositionFrame::MetaRev) + .integer() + .not_null() + .default(0), + ) + .col( + ColumnDef::new(PositionFrame::DataRev) + .integer() + .not_null() + .default(0), + ) + .index(&mut index_position_frame_start) + .to_owned(), + ) + .await?; + + let mut index_model_name = Index::create().unique().col(Model::Name).to_owned(); + manager + .create_table( + Table::create() + .table(Model::Table) + .if_not_exists() + .col( + ColumnDef::new(Model::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(Model::Name).string().not_null()) + .index(&mut index_model_name) + .to_owned(), + ) + .await?; + + let mut index_part_name_modelid = Index::create() + .unique() + .col(Part::Name) + .col(Part::ModelId) + .to_owned(); + manager + .create_table( + Table::create() + .table(Part::Table) + .if_not_exists() + .col( + ColumnDef::new(Part::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(Part::ModelId).integer().not_null()) + .col(ColumnDef::new(Part::Name).string().not_null()) + .col( + ColumnDef::new(Part::Type) + .custom(Alias::new("ENUM('LED','FIBER')")) + .not_null(), + ) + .col(ColumnDef::new(Part::Length).integer().null()) + .foreign_key( + ForeignKey::create() + .name("fk-part-model_id") + .from(Part::Table, Part::ModelId) + .to(Model::Table, Model::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .index(&mut index_part_name_modelid) + .to_owned(), + ) + .await?; + + let mut index_dancer_name = Index::create().unique().col(Dancer::Name).to_owned(); + manager + .create_table( + Table::create() + .table(Dancer::Table) + .if_not_exists() + .col( + ColumnDef::new(Dancer::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(Dancer::Name).string().not_null()) + .col(ColumnDef::new(Dancer::ModelId).integer().not_null()) + .foreign_key( + ForeignKey::create() + .name("fk-dancer-model_id") + .from(Dancer::Table, Dancer::ModelId) + .to(Model::Table, Model::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .index(&mut index_dancer_name) + .to_owned(), + ) + .await?; + + let mut index_led_effect = Index::create() + .unique() + .col(LEDEffect::Name) + .col(LEDEffect::ModelId) + .col(LEDEffect::PartId) + .to_owned(); + manager + .create_table( + Table::create() + .table(LEDEffect::Table) + .if_not_exists() + .col( + ColumnDef::new(LEDEffect::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(LEDEffect::Name).string().not_null()) + .col(ColumnDef::new(LEDEffect::ModelId).integer().not_null()) + .col(ColumnDef::new(LEDEffect::PartId).integer().not_null()) + .foreign_key( + ForeignKey::create() + .name("fk-led_effect-model_id") + .from(LEDEffect::Table, LEDEffect::ModelId) + .to(Model::Table, Model::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .foreign_key( + ForeignKey::create() + .name("fk-led_effect-part_id") + .from(LEDEffect::Table, LEDEffect::PartId) + .to(Part::Table, Part::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .index(&mut index_led_effect) + .to_owned(), + ) + .await?; + + let mut index_editing_control_frame = Index::create() + .unique() + .col(EditingControlFrame::FrameId) + .to_owned(); + manager + .create_table( + Table::create() + .table(EditingControlFrame::Table) + .if_not_exists() + .col( + ColumnDef::new(EditingControlFrame::UserId) + .integer() + .not_null() + .primary_key(), + ) + .col(ColumnDef::new(EditingControlFrame::FrameId).integer().null()) + .index(&mut index_editing_control_frame) + .foreign_key( + ForeignKey::create() + .name("fk-editing_control_frame-frame_id") + .from(EditingControlFrame::Table, EditingControlFrame::FrameId) + .to(ControlFrame::Table, ControlFrame::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + let mut index_editing_position_frame = Index::create() + .unique() + .col(EditingPositionFrame::FrameId) + .to_owned(); + manager + .create_table( + Table::create() + .table(EditingPositionFrame::Table) + .if_not_exists() + .col( + ColumnDef::new(EditingPositionFrame::UserId) + .integer() + .not_null() + .primary_key(), + ) + .col(ColumnDef::new(EditingPositionFrame::FrameId).integer().null()) + .index(&mut index_editing_position_frame) + .foreign_key( + ForeignKey::create() + .name("fk-editing_position_frame-frame_id") + .from(EditingPositionFrame::Table, EditingPositionFrame::FrameId) + .to(PositionFrame::Table, PositionFrame::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + let mut index_editing_led_effect = Index::create() + .unique() + .col(EditingLEDEffect::LedEffectId) + .to_owned(); + manager + .create_table( + Table::create() + .table(EditingLEDEffect::Table) + .if_not_exists() + .col( + ColumnDef::new(EditingLEDEffect::UserId) + .integer() + .not_null() + .primary_key(), + ) + .col(ColumnDef::new(EditingLEDEffect::LedEffectId).integer().null()) + .index(&mut index_editing_led_effect) + .foreign_key( + ForeignKey::create() + .name("fk-editing_led_effect-led_effect_id") + .from(EditingLEDEffect::Table, EditingLEDEffect::LedEffectId) + .to(LEDEffect::Table, LEDEffect::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + let mut pk_position_data = Index::create() + .col(PositionData::DancerId) + .col(PositionData::FrameId) + .to_owned(); + manager + .create_table( + Table::create() + .table(PositionData::Table) + .if_not_exists() + .col(ColumnDef::new(PositionData::DancerId).integer().not_null()) + .col(ColumnDef::new(PositionData::FrameId).integer().not_null()) + .col(ColumnDef::new(PositionData::X).double().not_null()) + .col(ColumnDef::new(PositionData::Y).double().not_null()) + .col(ColumnDef::new(PositionData::Z).double().not_null()) + .col( + ColumnDef::new(PositionData::Rx) + .double() + .not_null() + .default(Expr::cust("0")), + ) + .col( + ColumnDef::new(PositionData::Ry) + .double() + .not_null() + .default(Expr::cust("0")), + ) + .col( + ColumnDef::new(PositionData::Rz) + .double() + .not_null() + .default(Expr::cust("0")), + ) + .primary_key(&mut pk_position_data) + .foreign_key( + ForeignKey::create() + .name("fk-position_data-dancer_id") + .from(PositionData::Table, PositionData::DancerId) + .to(Dancer::Table, Dancer::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .foreign_key( + ForeignKey::create() + .name("fk-position_data-frame_id") + .from(PositionData::Table, PositionData::FrameId) + .to(PositionFrame::Table, PositionFrame::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + let mut index_control_data = Index::create() + .unique() + .col(ControlData::DancerId) + .col(ControlData::PartId) + .col(ControlData::FrameId) + .to_owned(); + manager + .create_table( + Table::create() + .table(ControlData::Table) + .if_not_exists() + .col( + ColumnDef::new(ControlData::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(ControlData::DancerId).integer().not_null()) + .col(ColumnDef::new(ControlData::PartId).integer().not_null()) + .col(ColumnDef::new(ControlData::FrameId).integer().not_null()) + .col( + ColumnDef::new(ControlData::Type) + .custom(Alias::new("ENUM('COLOR','EFFECT','LED_BULBS')")) + .not_null(), + ) + .col(ColumnDef::new(ControlData::ColorId).integer().null()) + .col(ColumnDef::new(ControlData::EffectId).integer().null()) + .col(ColumnDef::new(ControlData::Alpha).integer().not_null()) + .foreign_key( + ForeignKey::create() + .name("fk-control_data-dancer_id") + .from(ControlData::Table, ControlData::DancerId) + .to(Dancer::Table, Dancer::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .foreign_key( + ForeignKey::create() + .name("fk-control_data-part_id") + .from(ControlData::Table, ControlData::PartId) + .to(Part::Table, Part::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .foreign_key( + ForeignKey::create() + .name("fk-control_data-frame_id") + .from(ControlData::Table, ControlData::FrameId) + .to(ControlFrame::Table, ControlFrame::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .foreign_key( + ForeignKey::create() + .name("fk-control_data-color_id") + .from(ControlData::Table, ControlData::ColorId) + .to(Color::Table, Color::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .foreign_key( + ForeignKey::create() + .name("fk-control_data-effect_id") + .from(ControlData::Table, ControlData::EffectId) + .to(LEDEffect::Table, LEDEffect::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .index(&mut index_control_data) + .to_owned(), + ) + .await?; + + manager + .create_table( + Table::create() + .table(LEDBulb::Table) + .if_not_exists() + .col( + ColumnDef::new(LEDBulb::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(LEDBulb::ControlId).integer().not_null()) + .col(ColumnDef::new(LEDBulb::Position).integer().not_null()) + .col(ColumnDef::new(LEDBulb::ColorId).integer().not_null()) + .col(ColumnDef::new(LEDBulb::Alpha).integer().not_null()) + .foreign_key( + ForeignKey::create() + .name("fk-ledbulb-control_id") + .from(LEDBulb::Table, LEDBulb::ControlId) + .to(ControlData::Table, ControlData::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + let mut index_led_effect_state = Index::create() + .unique() + .col(LEDEffectState::EffectId) + .col(LEDEffectState::Position) + .to_owned(); + manager + .create_table( + Table::create() + .table(LEDEffectState::Table) + .if_not_exists() + .col( + ColumnDef::new(LEDEffectState::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(LEDEffectState::EffectId).integer().not_null()) + .col(ColumnDef::new(LEDEffectState::Position).integer().not_null()) + .col(ColumnDef::new(LEDEffectState::ColorId).integer().not_null()) + .col(ColumnDef::new(LEDEffectState::Alpha).integer().not_null()) + .foreign_key( + ForeignKey::create() + .name("fk-led_effect_state-effect_id") + .from(LEDEffectState::Table, LEDEffectState::EffectId) + .to(LEDEffect::Table, LEDEffect::Id) + .on_delete(ForeignKeyAction::Cascade) + .on_update(ForeignKeyAction::Cascade), + ) + .index(&mut index_led_effect_state) + .to_owned(), + ) + .await?; + + manager + .create_table( + Table::create() + .table(EffectListData::Table) + .if_not_exists() + .col( + ColumnDef::new(EffectListData::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(EffectListData::Start).integer().not_null()) + .col(ColumnDef::new(EffectListData::End).integer().not_null()) + .col(ColumnDef::new(EffectListData::Description).string().null()) + .to_owned(), + ) + .await?; + + manager + .create_table( + Table::create() + .table(Logger::Table) + .if_not_exists() + .col( + ColumnDef::new(Logger::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(Logger::User).integer().not_null()) + .col(ColumnDef::new(Logger::VariableValue).json().null()) + .col(ColumnDef::new(Logger::FieldName).string().not_null()) + .col( + ColumnDef::new(Logger::Time) + .timestamp() + .not_null() + .default(Expr::cust("CURRENT_TIMESTAMP")), + ) + .col(ColumnDef::new(Logger::Status).string().not_null()) + .col(ColumnDef::new(Logger::ErrorMessage).json().null()) + .col(ColumnDef::new(Logger::Result).json().null()) + .to_owned(), + ) + .await?; + + let mut index_revision_uuid = Index::create().unique().col(Revision::Uuid).to_owned(); + manager + .create_table( + Table::create() + .table(Revision::Table) + .if_not_exists() + .col( + ColumnDef::new(Revision::Id) + .integer() + .not_null() + .auto_increment() + .primary_key(), + ) + .col(ColumnDef::new(Revision::Uuid).string().not_null()) + .col( + ColumnDef::new(Revision::Time) + .timestamp() + .not_null() + .default(Expr::cust("CURRENT_TIMESTAMP")), + ) + .index(&mut index_revision_uuid) + .to_owned(), + ) + .await?; + + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .drop_table(Table::drop().table(Revision::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(Logger::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(EffectListData::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(LEDBulb::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(LEDEffectState::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(ControlData::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(PositionData::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(EditingLEDEffect::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(EditingPositionFrame::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(EditingControlFrame::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(LEDEffect::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(Dancer::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(Part::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(Model::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(PositionFrame::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(ControlFrame::Table).to_owned()) + .await?; + manager + .drop_table(Table::drop().table(Color::Table).to_owned()) + .await?; + Ok(()) + } +} + +#[derive(Iden)] +pub enum Color { + #[iden = "Color"] + Table, + Id, + Name, + R, + G, + B, +} + +#[derive(Iden)] +pub enum ControlFrame { + #[iden = "ControlFrame"] + Table, + Id, + Start, + Fade, + MetaRev, + DataRev, +} + +#[derive(Iden)] +pub enum PositionFrame { + #[iden = "PositionFrame"] + Table, + Id, + Start, + MetaRev, + DataRev, +} + +#[derive(Iden)] +pub enum Model { + #[iden = "Model"] + Table, + Id, + Name, +} + +#[derive(Iden)] +pub enum Part { + #[iden = "Part"] + Table, + Id, + ModelId, + Name, + Type, + Length, +} + +#[derive(Iden)] +pub enum Dancer { + #[iden = "Dancer"] + Table, + Id, + Name, + ModelId, +} + +#[derive(Iden)] +pub enum LEDEffect { + #[iden = "LEDEffect"] + Table, + Id, + Name, + ModelId, + PartId, +} + +#[derive(Iden)] +pub enum EditingControlFrame { + #[iden = "EditingControlFrame"] + Table, + UserId, + FrameId, +} + +#[derive(Iden)] +pub enum EditingPositionFrame { + #[iden = "EditingPositionFrame"] + Table, + UserId, + FrameId, +} + +#[derive(Iden)] +pub enum EditingLEDEffect { + #[iden = "EditingLEDEffect"] + Table, + UserId, + LedEffectId, +} + +#[derive(Iden)] +pub enum PositionData { + #[iden = "PositionData"] + Table, + DancerId, + FrameId, + X, + Y, + Z, + Rx, + Ry, + Rz, +} + +#[derive(Iden)] +pub enum ControlData { + #[iden = "ControlData"] + Table, + Id, + DancerId, + PartId, + FrameId, + Type, + ColorId, + EffectId, + Alpha, +} + +#[derive(Iden)] +pub enum LEDBulb { + #[iden = "LEDBulb"] + Table, + Id, + ControlId, + Position, + ColorId, + Alpha, +} + +#[derive(Iden)] +pub enum LEDEffectState { + #[iden = "LEDEffectState"] + Table, + Id, + EffectId, + Position, + ColorId, + Alpha, +} + +#[derive(Iden)] +pub enum EffectListData { + #[iden = "EffectListData"] + Table, + Id, + Start, + End, + Description, +} + +#[derive(Iden)] +pub enum Logger { + #[iden = "Logger"] + Table, + Id, + User, + VariableValue, + FieldName, + Time, + Status, + ErrorMessage, + Result, +} + +#[derive(Iden)] +pub enum Revision { + #[iden = "Revision"] + Table, + Id, + Uuid, + Time, +} diff --git a/editor-server/seaorm/migration/src/main.rs b/editor-server/seaorm/migration/src/main.rs new file mode 100644 index 000000000..f054deaf8 --- /dev/null +++ b/editor-server/seaorm/migration/src/main.rs @@ -0,0 +1,6 @@ +use sea_orm_migration::prelude::*; + +#[tokio::main] +async fn main() { + cli::run_cli(migration::Migrator).await; +} diff --git a/editor-server/seaorm/src/entities/color.rs b/editor-server/seaorm/src/entities/color.rs new file mode 100644 index 000000000..93a546b6c --- /dev/null +++ b/editor-server/seaorm/src/entities/color.rs @@ -0,0 +1,29 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "Color")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + #[sea_orm(unique)] + pub name: String, + pub r: i32, + pub g: i32, + pub b: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::control_data::Entity")] + ControlData, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlData.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/control_data.rs b/editor-server/seaorm/src/entities/control_data.rs new file mode 100644 index 000000000..e055e7823 --- /dev/null +++ b/editor-server/seaorm/src/entities/control_data.rs @@ -0,0 +1,102 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use super::sea_orm_active_enums::Type; +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "ControlData")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub dancer_id: i32, + pub part_id: i32, + pub frame_id: i32, + pub r#type: Type, + pub color_id: Option, + pub effect_id: Option, + pub alpha: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::color::Entity", + from = "Column::ColorId", + to = "super::color::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Color, + #[sea_orm( + belongs_to = "super::control_frame::Entity", + from = "Column::FrameId", + to = "super::control_frame::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + ControlFrame, + #[sea_orm( + belongs_to = "super::dancer::Entity", + from = "Column::DancerId", + to = "super::dancer::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Dancer, + #[sea_orm(has_many = "super::led_bulb::Entity")] + LedBulb, + #[sea_orm( + belongs_to = "super::led_effect::Entity", + from = "Column::EffectId", + to = "super::led_effect::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + LedEffect, + #[sea_orm( + belongs_to = "super::part::Entity", + from = "Column::PartId", + to = "super::part::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Part, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Color.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlFrame.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Dancer.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::LedBulb.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::LedEffect.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Part.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/control_frame.rs b/editor-server/seaorm/src/entities/control_frame.rs new file mode 100644 index 000000000..6bb603acd --- /dev/null +++ b/editor-server/seaorm/src/entities/control_frame.rs @@ -0,0 +1,37 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "ControlFrame")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + #[sea_orm(unique)] + pub start: i32, + pub fade: i8, + pub meta_rev: i32, + pub data_rev: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::control_data::Entity")] + ControlData, + #[sea_orm(has_one = "super::editing_control_frame::Entity")] + EditingControlFrame, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlData.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::EditingControlFrame.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/dancer.rs b/editor-server/seaorm/src/entities/dancer.rs new file mode 100644 index 000000000..92ffa40e1 --- /dev/null +++ b/editor-server/seaorm/src/entities/dancer.rs @@ -0,0 +1,58 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "Dancer")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + #[sea_orm(unique)] + pub name: String, + pub model_id: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::control_data::Entity")] + ControlData, + #[sea_orm( + belongs_to = "super::model::Entity", + from = "Column::ModelId", + to = "super::model::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Model, + #[sea_orm(has_many = "super::position_data::Entity")] + PositionData, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlData.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Model.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::PositionData.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + super::position_data::Relation::PositionFrame.def() + } + fn via() -> Option { + Some(super::position_data::Relation::Dancer.def().rev()) + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/editing_control_frame.rs b/editor-server/seaorm/src/entities/editing_control_frame.rs new file mode 100644 index 000000000..2789abb1f --- /dev/null +++ b/editor-server/seaorm/src/entities/editing_control_frame.rs @@ -0,0 +1,32 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "EditingControlFrame")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub user_id: i32, + #[sea_orm(unique)] + pub frame_id: Option, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::control_frame::Entity", + from = "Column::FrameId", + to = "super::control_frame::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + ControlFrame, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlFrame.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/editing_led_effect.rs b/editor-server/seaorm/src/entities/editing_led_effect.rs new file mode 100644 index 000000000..498e2a16d --- /dev/null +++ b/editor-server/seaorm/src/entities/editing_led_effect.rs @@ -0,0 +1,32 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "EditingLEDEffect")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub user_id: i32, + #[sea_orm(unique)] + pub led_effect_id: Option, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::led_effect::Entity", + from = "Column::LedEffectId", + to = "super::led_effect::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + LedEffect, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::LedEffect.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/editing_position_frame.rs b/editor-server/seaorm/src/entities/editing_position_frame.rs new file mode 100644 index 000000000..478522c87 --- /dev/null +++ b/editor-server/seaorm/src/entities/editing_position_frame.rs @@ -0,0 +1,32 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "EditingPositionFrame")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub user_id: i32, + #[sea_orm(unique)] + pub frame_id: Option, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::position_frame::Entity", + from = "Column::FrameId", + to = "super::position_frame::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + PositionFrame, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::PositionFrame.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/effect_list_data.rs b/editor-server/seaorm/src/entities/effect_list_data.rs new file mode 100644 index 000000000..d75f02719 --- /dev/null +++ b/editor-server/seaorm/src/entities/effect_list_data.rs @@ -0,0 +1,18 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "EffectListData")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub start: i32, + pub end: i32, + pub description: Option, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/led_bulb.rs b/editor-server/seaorm/src/entities/led_bulb.rs new file mode 100644 index 000000000..c35c54bb5 --- /dev/null +++ b/editor-server/seaorm/src/entities/led_bulb.rs @@ -0,0 +1,34 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "LEDBulb")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub control_id: i32, + pub position: i32, + pub color_id: i32, + pub alpha: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::control_data::Entity", + from = "Column::ControlId", + to = "super::control_data::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + ControlData, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlData.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/led_effect.rs b/editor-server/seaorm/src/entities/led_effect.rs new file mode 100644 index 000000000..6ba9f024c --- /dev/null +++ b/editor-server/seaorm/src/entities/led_effect.rs @@ -0,0 +1,71 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "LEDEffect")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub name: String, + pub model_id: i32, + pub part_id: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::control_data::Entity")] + ControlData, + #[sea_orm(has_one = "super::editing_led_effect::Entity")] + EditingLedEffect, + #[sea_orm(has_many = "super::led_effect_state::Entity")] + LedEffectState, + #[sea_orm( + belongs_to = "super::model::Entity", + from = "Column::ModelId", + to = "super::model::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Model, + #[sea_orm( + belongs_to = "super::part::Entity", + from = "Column::PartId", + to = "super::part::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Part, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlData.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::EditingLedEffect.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::LedEffectState.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Model.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Part.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/led_effect_state.rs b/editor-server/seaorm/src/entities/led_effect_state.rs new file mode 100644 index 000000000..fda7e6140 --- /dev/null +++ b/editor-server/seaorm/src/entities/led_effect_state.rs @@ -0,0 +1,34 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "LEDEffectState")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub effect_id: i32, + pub position: i32, + pub color_id: i32, + pub alpha: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::led_effect::Entity", + from = "Column::EffectId", + to = "super::led_effect::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + LedEffect, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::LedEffect.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/logger.rs b/editor-server/seaorm/src/entities/logger.rs new file mode 100644 index 000000000..cc9814b0b --- /dev/null +++ b/editor-server/seaorm/src/entities/logger.rs @@ -0,0 +1,22 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "Logger")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub user: i32, + pub variable_value: Option, + pub field_name: String, + pub time: DateTimeUtc, + pub status: String, + pub error_message: Option, + pub result: Option, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/mod.rs b/editor-server/seaorm/src/entities/mod.rs new file mode 100644 index 000000000..dedd6bc5c --- /dev/null +++ b/editor-server/seaorm/src/entities/mod.rs @@ -0,0 +1,22 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +pub mod prelude; + +pub mod color; +pub mod control_data; +pub mod control_frame; +pub mod dancer; +pub mod editing_control_frame; +pub mod editing_led_effect; +pub mod editing_position_frame; +pub mod effect_list_data; +pub mod led_bulb; +pub mod led_effect; +pub mod led_effect_state; +pub mod logger; +pub mod model; +pub mod part; +pub mod position_data; +pub mod position_frame; +pub mod revision; +pub mod sea_orm_active_enums; diff --git a/editor-server/seaorm/src/entities/model.rs b/editor-server/seaorm/src/entities/model.rs new file mode 100644 index 000000000..0463988f0 --- /dev/null +++ b/editor-server/seaorm/src/entities/model.rs @@ -0,0 +1,42 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "Model")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + #[sea_orm(unique)] + pub name: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::dancer::Entity")] + Dancer, + #[sea_orm(has_many = "super::led_effect::Entity")] + LedEffect, + #[sea_orm(has_many = "super::part::Entity")] + Part, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Dancer.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::LedEffect.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Part.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/part.rs b/editor-server/seaorm/src/entities/part.rs new file mode 100644 index 000000000..abd23998a --- /dev/null +++ b/editor-server/seaorm/src/entities/part.rs @@ -0,0 +1,51 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use super::sea_orm_active_enums::Type; +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "Part")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + pub model_id: i32, + pub name: String, + pub r#type: Type, + pub length: Option, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::control_data::Entity")] + ControlData, + #[sea_orm(has_many = "super::led_effect::Entity")] + LedEffect, + #[sea_orm( + belongs_to = "super::model::Entity", + from = "Column::ModelId", + to = "super::model::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Model, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::ControlData.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::LedEffect.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Model.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/position_data.rs b/editor-server/seaorm/src/entities/position_data.rs new file mode 100644 index 000000000..8253c79b3 --- /dev/null +++ b/editor-server/seaorm/src/entities/position_data.rs @@ -0,0 +1,58 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +#[sea_orm(table_name = "PositionData")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub dancer_id: i32, + #[sea_orm(primary_key, auto_increment = false)] + pub frame_id: i32, + #[sea_orm(column_type = "Double")] + pub x: f64, + #[sea_orm(column_type = "Double")] + pub y: f64, + #[sea_orm(column_type = "Double")] + pub z: f64, + #[sea_orm(column_type = "Double")] + pub rx: f64, + #[sea_orm(column_type = "Double")] + pub ry: f64, + #[sea_orm(column_type = "Double")] + pub rz: f64, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::dancer::Entity", + from = "Column::DancerId", + to = "super::dancer::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + Dancer, + #[sea_orm( + belongs_to = "super::position_frame::Entity", + from = "Column::FrameId", + to = "super::position_frame::Column::Id", + on_update = "Cascade", + on_delete = "Cascade" + )] + PositionFrame, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Dancer.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::PositionFrame.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/position_frame.rs b/editor-server/seaorm/src/entities/position_frame.rs new file mode 100644 index 000000000..e2b1dc167 --- /dev/null +++ b/editor-server/seaorm/src/entities/position_frame.rs @@ -0,0 +1,45 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "PositionFrame")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + #[sea_orm(unique)] + pub start: i32, + pub meta_rev: i32, + pub data_rev: i32, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_one = "super::editing_position_frame::Entity")] + EditingPositionFrame, + #[sea_orm(has_many = "super::position_data::Entity")] + PositionData, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::EditingPositionFrame.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::PositionData.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + super::position_data::Relation::Dancer.def() + } + fn via() -> Option { + Some(super::position_data::Relation::PositionFrame.def().rev()) + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/prelude.rs b/editor-server/seaorm/src/entities/prelude.rs new file mode 100644 index 000000000..68e717f0d --- /dev/null +++ b/editor-server/seaorm/src/entities/prelude.rs @@ -0,0 +1,19 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +pub use super::color::Entity as Color; +pub use super::control_data::Entity as ControlData; +pub use super::control_frame::Entity as ControlFrame; +pub use super::dancer::Entity as Dancer; +pub use super::editing_control_frame::Entity as EditingControlFrame; +pub use super::editing_led_effect::Entity as EditingLedEffect; +pub use super::editing_position_frame::Entity as EditingPositionFrame; +pub use super::effect_list_data::Entity as EffectListData; +pub use super::led_bulb::Entity as LedBulb; +pub use super::led_effect::Entity as LedEffect; +pub use super::led_effect_state::Entity as LedEffectState; +pub use super::logger::Entity as Logger; +pub use super::model::Entity as Model; +pub use super::part::Entity as Part; +pub use super::position_data::Entity as PositionData; +pub use super::position_frame::Entity as PositionFrame; +pub use super::revision::Entity as Revision; diff --git a/editor-server/seaorm/src/entities/revision.rs b/editor-server/seaorm/src/entities/revision.rs new file mode 100644 index 000000000..ecd5e2c78 --- /dev/null +++ b/editor-server/seaorm/src/entities/revision.rs @@ -0,0 +1,18 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] +#[sea_orm(table_name = "Revision")] +pub struct Model { + #[sea_orm(primary_key)] + pub id: i32, + #[sea_orm(unique)] + pub uuid: String, + pub time: DateTimeUtc, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/editor-server/seaorm/src/entities/sea_orm_active_enums.rs b/editor-server/seaorm/src/entities/sea_orm_active_enums.rs new file mode 100644 index 000000000..0b6d22b3e --- /dev/null +++ b/editor-server/seaorm/src/entities/sea_orm_active_enums.rs @@ -0,0 +1,12 @@ +//! `SeaORM` Entity, @generated by sea-orm-codegen 1.1.4 + +use sea_orm::entity::prelude::*; + +#[derive(Debug, Clone, PartialEq, Eq, EnumIter, DeriveActiveEnum)] +#[sea_orm(rs_type = "String", db_type = "Enum", enum_name = "type")] +pub enum Type { + #[sea_orm(string_value = "LED")] + Led, + #[sea_orm(string_value = "FIBER")] + Fiber, +} diff --git a/editor-server/seaorm/src/main.rs b/editor-server/seaorm/src/main.rs new file mode 100644 index 000000000..42e19e1bc --- /dev/null +++ b/editor-server/seaorm/src/main.rs @@ -0,0 +1,40 @@ +use migration::{Migrator, MigratorTrait}; +use sea_orm::Database; +use std::env::{args, var}; +use std::time; + +#[tokio::main] +async fn main() { + let args: Vec = args().collect(); + + // Check MySQL connection when migrating + if args.len() >= 2 && args[1] == "migrate" { + dotenv::dotenv().ok(); + + let mysql_host = var("DATABASE_URL").expect("DATABASE_URL is not set"); + println!("MySQL Host: {}", mysql_host); + + loop { + let connection = match Database::connect(mysql_host.as_str()).await { + Ok(conn) => conn, + Err(_) => { + println!("Waiting for mysql to start..."); + tokio::time::sleep(time::Duration::from_secs(1)).await; + continue; + } + }; + + match Migrator::up(&connection, None).await { + Ok(_) => { + println!("Migration completed!"); + break; + } + Err(e) => { + println!("Migration failed: {:?}. Retrying in 1 second...", e); + tokio::time::sleep(time::Duration::from_secs(1)).await; + continue; + } + } + } + } +} diff --git a/prod-support/editor-server/Dockerfile b/prod-support/editor-server/Dockerfile index f82709964..5eedc819a 100644 --- a/prod-support/editor-server/Dockerfile +++ b/prod-support/editor-server/Dockerfile @@ -4,16 +4,13 @@ RUN cargo new editor-server WORKDIR /editor-server COPY ./editor-server/.cargo ./.cargo -RUN echo '\n\n[workspace]\nmembers = ["prisma"]\n' >> ./Cargo.toml +RUN echo '\n\n[workspace]\nmembers = ["seaorm"]\n' >> ./Cargo.toml -RUN mkdir ./prisma -COPY ./editor-server/prisma/schema.prisma ./prisma/schema.prisma -COPY ./editor-server/prisma/Cargo.toml ./prisma/Cargo.toml -COPY ./editor-server/prisma/src ./prisma/src +RUN mkdir ./seaorm +COPY ./editor-server/seaorm/Cargo.toml ./seaorm/Cargo.toml +COPY ./editor-server/seaorm/src ./seaorm/src -RUN cargo prisma validate - -COPY ./editor-server/prisma/migrations ./prisma/migrations +COPY ./editor-server/seaorm/migration ./seaorm/migration COPY ./editor-server/Cargo.toml . COPY ./editor-server/Cargo.lock . @@ -23,5 +20,4 @@ RUN rm -r ./src COPY ./editor-server/.env.production ./.env COPY ./editor-server/src ./src -CMD ["bash", "-c", "./target/debug/prisma migrate deploy && cargo run --release"] - +CMD ["bash", "-c", "cargo run -p seaorm --release -- migrate && cargo run --release"]