From 35a23e42e4842279e1e6db240f9810071218ce53 Mon Sep 17 00:00:00 2001 From: zhongqin Date: Fri, 31 Jul 2026 08:18:41 +0800 Subject: [PATCH] feat: add tunnel, add device doe --- .gitignore | 2 + ...a593506d21bf6ae941a7ebcc52365c84a8b1b.json | 12 +++ ...08e4c4d2c1c45f2bbffa52e54ac4a34f96519.json | 12 --- ...03778459a13f196e241481b5ff2289c9861a1.json | 12 --- ...07b94ab60a33891316c437e88f8b2ac3aef5d.json | 12 --- ...d59d31c4feade2e729ab5934ad2df2709fb34.json | 12 --- ...093233a6e3c1908a423b8758ff6c4e6e65697.json | 12 +++ ...cf4e3145668e2182abf297a4d1d4721d9954a.json | 12 +++ ...8909ddbe2e6dd1739005d7dfea832decf99f6.json | 12 --- ...b11a5584109a3180da235347841b3250de296.json | 12 --- ...6cd98d8eee83dbef642e02b040880cfdbe527.json | 12 +++ ...119777c9bd76a94b971019c5f09a1b639b211.json | 12 --- ...231f2705ed5bfd3acef58c99c734555a0a1ec.json | 12 +++ ...3664435d0f23191806ad6cc168bb160e622ca.json | 12 +++ ...3b57f1129b514c920afe834270739a6630a15.json | 12 +++ ...bf23024dde72e97b064426ad3072f00ba0133.json | 12 --- ...2564eab8a1d0d45b5b95cf6c43f1f23b55041.json | 12 --- ...4623a05d2f1ca4516fe11e30244c78e015bab.json | 12 +++ ...14eeb10050ec463344d7559b4584488b6d6cd.json | 12 +++ ...8044e905a2505e00a31cef49ca71f3e9de374.json | 12 --- ...d00f89c9a9d529b0c63c90b17d1efadb45eaf.json | 12 --- ...8509321e89efebc0390b61066077c81f02ed4.json | 12 +++ ...1097b03eb5e84a5a7395a3eebf364f6131939.json | 12 +++ ...722dbc41421dd3a7874beffc2b6c4ce8b273b.json | 12 +++ ...33e90982004c99a5b5c44e7b149632cf57ffc.json | 12 +++ ...ba41a6df71a318dcfdd3258827eb1d1b04f6e.json | 12 --- ...55d13787e0d15c492dffe8b9e3449217e4290.json | 12 --- ...0aae8866a69faee34ec74ee6bdbc24a731ec1.json | 12 +++ ...f020060034da4444407dcd4e0ca15243e3bce.json | 12 +++ ...90ab2ffd0ec63c7a5bbc1f53473fd94b4ebdb.json | 12 +++ ...4189ffc85872376e00e68d4b5ada685b35f2d.json | 12 --- ...9bedb28d04862fa971c0e968d125985820056.json | 12 +++ ...eb00ba9c37e8a0bf98abc87065956d6933911.json | 12 --- ...38a6c8a72d52158a52558f84a33267fefb520.json | 12 +++ ...dcfdaf596ff1b172b29d02008f38ec680befc.json | 12 --- ...b9f3b75ed64146de924cd5410374b6e560ffb.json | 12 --- ...25522d8a6d4ae3cd90d12955d9083b4532ca9.json | 12 --- ...d01d638cce4e957266188c7828dc83b9c1c95.json | 12 --- ...631d370f2c20ca7e76b43f226a4dd09c130f0.json | 12 --- ...2aead3e7758b38e3f38f455e235315b2a3587.json | 12 +++ ...11833ecb46fef745ab93bef2ddd269711b0d0.json | 12 +++ ...01ccd40d62d3a581f9da0389cc6d0cf055e6e.json | 12 +++ ...70d25cf03b0adef1a1d93b2ef58a9a3a3512d.json | 12 +++ ...05faf78f0d4e0451dfe529c2b2378003dc0eb.json | 12 +++ ...8072866c31eb22e3dd09ef9ddc17a0c94ad80.json | 12 --- ...afc03c20d6bd0855487ab3d9703264b248b69.json | 12 +++ ...dff9e0e25bbfefff115efee864f63de858f52.json | 12 +++ ...50b8ca34e14cc61193b276981fe8b21509f3b.json | 12 +++ ...91a598f454c0ff87f7d68c363682e0ba16265.json | 12 +++ ...7f15513e3372366172ef010cf08e498994c8b.json | 12 --- ...c55daf2af68798d01c105963f27edd115682e.json | 12 --- ...8f3dcf46330e987f50ab408b4320b1c821ccf.json | 12 +++ ...683d6b0f6adde8e4703cbf7b8070e787025b4.json | 12 +++ ...ee2871658c9eb488efa84784e2fcc6f00441e.json | 12 --- ...1dd240ff7cfcbc2f44cdba6ece1675b5064ed.json | 12 --- ...3960e6f98ad4e0b32b297959f10a51ef7b627.json | 12 +++ ...637dfa6d697206896e963abd2281ba910619a.json | 12 --- ...17e1fe2bcb22ec317f62869f3e037c7167dbb.json | 12 +++ ...417f1e2505057b7ed3e56f3921191befa2205.json | 12 --- ...1082a3459e408b4d3e9d7c1f4dd6408897010.json | 12 --- ...cf0d9804cbc1a24d0549e32f58f6c7189758b.json | 12 --- ...1a24e6834a0da52952a5b2f21221681886d7d.json | 12 --- ...9160013287aa0cbbab8c5204b5dbe3e54a3c3.json | 12 --- ...841474e02a2c92cc2391623ec13a3a55c22d2.json | 12 +++ ...209031b74c7233cbba37bbd6792ecca9150e2.json | 12 --- ...df74dbd2f165090191fe767638988f50d04f7.json | 12 +++ ...c0d35586cd07a24fd6232df173e3ffc2b69f7.json | 12 --- ...b86cf05f8c670c4760ce727add4a53a77a75d.json | 12 --- ...87e848a82ef3eda14b09611af597fbfcd8119.json | 12 +++ ...f273da0d49943754ebf8e715988cea21fe3ae.json | 12 --- ...c02527017a18c8b8dc89b73f0a99a1e481357.json | 12 +++ ...0b32a67eedf844d63c3192a1134bcc84d780b.json | 12 --- ...3578010e49272cfbb012aa35dcaf62e4f4988.json | 12 --- ...c654c9cf6a84870f035994aacdca12add153d.json | 12 +++ ...ac32b86b78b07c63035550c1f4d409274c83f.json | 12 +++ ...cb605e246efe53cc29338388d8728fa432e57.json | 12 --- ...8e97d501e2105a7e386425f3d2d3240e29511.json | 12 --- ...2e202958f9a73a4abef3e9f9a2e803623ab29.json | 12 +++ ...2aa44319f859cf6b96e23faadfaedde151206.json | 12 +++ ...2aa2b75302feb99d520fdef4bb3a709d28379.json | 12 --- ...204ec02d5abccf54481ef54e68eccf7ae11f9.json | 12 --- ...4decda367afdf727f26c41467d8ede3b0a4c8.json | 12 --- ...bce3ef7990746beae4dfba722537a1b4dcae2.json | 12 +++ ...dc9ef2b6beb40bee741f0a113d0e2bb2045fa.json | 12 +++ ...72b504edf1ea8c4d20a60117b4c0a37e4ba33.json | 12 --- ...e1c6e266f2e8d6d8703d3489bd63e7a38339e.json | 12 +++ ...e4ea5fef8ab09ca089855c2e0ad15f96cfd2c.json | 12 +++ ...387bbc4b4dcd7ddcc42548574e2b59f259cc2.json | 12 +++ ...0487a9210946793a8a41d6e2e7b8536c59559.json | 12 --- ...1dcf109ec97a5e3dcdb330ee1ae90e021839f.json | 12 +++ ...dfdf95115ab50fb24a2aeb3870956a1497960.json | 12 +++ ...29a3d85dc52936951dd65734949c07b94253f.json | 12 +++ ...5fc4ba1a151646c05e6b8275ed47caa129fc8.json | 12 --- ...41dc77b26b68ca0ab101df4cf3a7ab21fe502.json | 12 --- ...9c6446dbddb46dc50e93c3eca1b72be6ecdcd.json | 12 +++ ...cd0cb95058b1baab16f8f457a52a7c5be02a6.json | 12 --- ...7505b8fd06507bdc16a31aaabdc21cbc33c5c.json | 12 --- ...a1f43ea4cfd76d1b96f5ce7684efde79e9312.json | 12 +++ ...27ed9e199a44d5c6261f924efc092973eaac0.json | 12 --- ...5e22d8585d2550bb5ea22761294cc57432d9f.json | 12 --- ...44002859e31d6d0899a644a3cd9c62c8dab67.json | 12 --- ...ed62fb054e9add442bc1a0ccd851d493c1292.json | 12 --- ...acdef534b7bed029494180df79eeb01d11b86.json | 12 --- ...22d568b3c71b31c662b543a90d57d2f0075e9.json | 12 +++ ...bb2c728dc7cd3f2e7e8787d26c4f73dec405c.json | 12 +++ ...bc8fe7621e783dc86af4af9ccaccf2263b0b3.json | 12 --- ...8ff38ae754f197a493183d29003daf53c1912.json | 12 --- ...feac85735e87fc7031987ec5b052c62f40791.json | 12 +++ ...c747cb9685f805763b8628f8a7433bddbd17e.json | 12 --- ...b1a3a58b9b9577a955d654cc198e5283f9e31.json | 12 +++ ...1272644c6d0521b0217d32199150c7b5d84be.json | 12 --- ...8b47b2f64b5d635f0219e8930a21a1c62a57f.json | 12 +++ ...73bcab990ef65358dcb099427a468a039ec27.json | 12 +++ ...559e9732b78d90183a72109537bacd7ca3fb6.json | 12 +++ ...f47c323d58ecb7b5a5720a887e00cfe66041c.json | 12 --- ...fd976b0649521feb42c881acd8f8be09406f0.json | 12 +++ ...8ce24d1b84cb148c87fdcbda5f69e9c267743.json | 12 --- ...0a7c786032576dd87990c42d1fa23d37bd730.json | 12 +++ ...282090c0b874557bf646ef9b2e7c623c28cde.json | 12 --- ...9b0ec18617974eea17f926a4ea4064549854f.json | 12 --- ...5d470924d68eccf4acfe0ca71907d46f7ea87.json | 12 --- ...5a54230203a1e51a54b03f7a9b9dd622132fb.json | 12 --- ...b21a2a87033ee69ee5a5e9498062e4e49722c.json | 12 --- ...b612494c1374783989d5a1353a99cb39cbe90.json | 12 --- ...01e7f4b88faf7277f580b0115c3006579b41e.json | 12 +++ ...fe5dbe67bda983ff018de9948ac6eae5719a7.json | 12 --- ...3f80ef1145b31d56d43bb780b8db500f4c6c2.json | 12 --- ...e690472890d20b8fd1ec2ea67ccdfa5618480.json | 12 +++ ...6be599279b1adc3978387c42eca5eb7fd23ad.json | 12 --- ...dd3aa11047cf03216ca57420ea05ea8c6f080.json | 12 +++ ...2216ca9e12ad42ce0dd80f2e300faa940c51a.json | 12 +++ ...2791787d939db1493f3be3bdbd1b991e51ec7.json | 12 +++ ...2212a24bcedbb15b4b011dbc382ff2251234c.json | 12 --- ...aaa7137dde5b5dfd9f921dec7ad0efe9b7e0a.json | 12 --- ...e6682c2e39ef36e523ddfc61514368acfe527.json | 12 +++ ...a2996735aeb9f396e71d81fa3fd312abd18ef.json | 12 +++ ...7259c0eff4236af28441bf62a8b83e267e8cc.json | 12 +++ ...a2d41ec9221e5cf5cabc375cb3b77314dd660.json | 12 +++ ...2af772028c349bd46e073b15a6055364b059f.json | 12 --- ...f06900f9650c01673379f6eb26e0b42df1487.json | 12 --- ...549e8be4f1e8d067592c7197dbbfade4ad3c3.json | 12 +++ ...0069bcfbfe61ea8befde895bae56980e4f778.json | 12 --- ...d49e37541daf536c2ce5b13d37bf7594dd208.json | 12 --- ...c29c70db8a55973912b740dbbda6d732e3ccb.json | 12 +++ ...a5734a015f88dd88e5aa6c700f0d653342ab4.json | 12 +++ ...4a0fb878766c133aa944f6a7336e247621da2.json | 12 +++ ...46ba9fd62eb88a891d9e4927f42098a859011.json | 12 +++ ...879d93406d56b2bfd546be60ffa966e24bc28.json | 12 +++ ...6661f274cf6e387b3903e5bd75cd1e48074a4.json | 12 +++ ...a61daed0de1f5acbe328a967fea7083598ccf.json | 12 +++ ...2ee8a6efd972c54447ad4aedd244c78dab623.json | 12 --- ...3f92ba7abab707c2ba749fd11ae68bb22aad2.json | 12 +++ ...19ba207e7da6c97254a23c2f5e2773ff32a13.json | 12 --- ...3d6c718be4903b6fd194d7b04a9c64a4a8128.json | 12 +++ ...f8f67fc6a75b08939a2ca750a917bcd6b4298.json | 12 --- ...54d76551d25a16eebec367d92f5ee987d2ade.json | 12 --- ...d0c83f4e7f42e239c67fb2780a2791beb849d.json | 12 --- 3rd/bore | 1 + Cargo.lock | 86 ++++++++++++++- Cargo.toml | 10 +- justfile | 2 +- migrations/mysql/schema.mysql.sql | 15 +++ migrations/postgres/schema.postgres.sql | 16 +++ migrations/sqlite/schema.sqlite.sql | 16 +++ src/cli.rs | 38 +++++++ src/cli/tunnel_cmd.rs | 39 +++++++ src/dto.rs | 2 + src/dto/user_device_code.rs | 35 ++++++ src/handlers/auth.rs | 63 ++++++++++- src/models.rs | 1 + src/models/user_device_code.rs | 101 ++++++++++++++++++ src/services.rs | 1 + src/services/user_device_code.rs | 98 +++++++++++++++++ 173 files changed, 1439 insertions(+), 959 deletions(-) create mode 100644 .sqlx/query-008bb29097e0580b36adb309f72a593506d21bf6ae941a7ebcc52365c84a8b1b.json delete mode 100644 .sqlx/query-00f6bad9968219ec438c35106c208e4c4d2c1c45f2bbffa52e54ac4a34f96519.json delete mode 100644 .sqlx/query-0218fef502ae157fa71b54e879f03778459a13f196e241481b5ff2289c9861a1.json delete mode 100644 .sqlx/query-05732b48dbf7a440862fda2158c07b94ab60a33891316c437e88f8b2ac3aef5d.json delete mode 100644 .sqlx/query-0745f93cf3ba9ee9a8763e8f609d59d31c4feade2e729ab5934ad2df2709fb34.json create mode 100644 .sqlx/query-07eb8fa962146348f40945d43a4093233a6e3c1908a423b8758ff6c4e6e65697.json create mode 100644 .sqlx/query-0a8c9719e5108f9a4d9c6962fa3cf4e3145668e2182abf297a4d1d4721d9954a.json delete mode 100644 .sqlx/query-0ae2f2a67fea764cb51fabd168f8909ddbe2e6dd1739005d7dfea832decf99f6.json delete mode 100644 .sqlx/query-0aebf25ff8e3470f655e0284c35b11a5584109a3180da235347841b3250de296.json create mode 100644 .sqlx/query-0b3a113ccbdcbb6b490fceab7076cd98d8eee83dbef642e02b040880cfdbe527.json delete mode 100644 .sqlx/query-0d9cf697203f12beace57613de3119777c9bd76a94b971019c5f09a1b639b211.json create mode 100644 .sqlx/query-0db51743f765df9c62f1ffcf664231f2705ed5bfd3acef58c99c734555a0a1ec.json create mode 100644 .sqlx/query-0e48b64b6b62dc90a733a3243f53664435d0f23191806ad6cc168bb160e622ca.json create mode 100644 .sqlx/query-0e65ccc5bd9750ba79ffcfac3103b57f1129b514c920afe834270739a6630a15.json delete mode 100644 .sqlx/query-0f7df02f4e4e2d810a2fec17a14bf23024dde72e97b064426ad3072f00ba0133.json delete mode 100644 .sqlx/query-10680b0d5b4ec5ce92e347b62ad2564eab8a1d0d45b5b95cf6c43f1f23b55041.json create mode 100644 .sqlx/query-1255531a58a24e68aae5c6248964623a05d2f1ca4516fe11e30244c78e015bab.json create mode 100644 .sqlx/query-13d326ca41c1ccd5dde5fc46c9014eeb10050ec463344d7559b4584488b6d6cd.json delete mode 100644 .sqlx/query-14997d4d48ef091021b470549b98044e905a2505e00a31cef49ca71f3e9de374.json delete mode 100644 .sqlx/query-1518fec9a4ca05ecc6d88bdb621d00f89c9a9d529b0c63c90b17d1efadb45eaf.json create mode 100644 .sqlx/query-15958b27a50ae6952a8aea322388509321e89efebc0390b61066077c81f02ed4.json create mode 100644 .sqlx/query-176ad453da277a6ee8eaa0c4ed91097b03eb5e84a5a7395a3eebf364f6131939.json create mode 100644 .sqlx/query-1932d42b044e095786d168ee193722dbc41421dd3a7874beffc2b6c4ce8b273b.json create mode 100644 .sqlx/query-19fa9bb6894b2ebb1ef45fdd3de33e90982004c99a5b5c44e7b149632cf57ffc.json delete mode 100644 .sqlx/query-1a6350d43916712692fd0b7abc6ba41a6df71a318dcfdd3258827eb1d1b04f6e.json delete mode 100644 .sqlx/query-1a804863d5148834f4290bb2de855d13787e0d15c492dffe8b9e3449217e4290.json create mode 100644 .sqlx/query-1b2cfe34aca82f161903a831ca60aae8866a69faee34ec74ee6bdbc24a731ec1.json create mode 100644 .sqlx/query-1d5778e10a7793a37d585de2067f020060034da4444407dcd4e0ca15243e3bce.json create mode 100644 .sqlx/query-1e1792414b6404d99a5be854ebf90ab2ffd0ec63c7a5bbc1f53473fd94b4ebdb.json delete mode 100644 .sqlx/query-1fd8ce093c7d811d3f3256cda164189ffc85872376e00e68d4b5ada685b35f2d.json create mode 100644 .sqlx/query-206ce47841a358a42e389045e779bedb28d04862fa971c0e968d125985820056.json delete mode 100644 .sqlx/query-23cd50a91dba636533568f42d48eb00ba9c37e8a0bf98abc87065956d6933911.json create mode 100644 .sqlx/query-2883df84746cf3aa0baaaa4e9fa38a6c8a72d52158a52558f84a33267fefb520.json delete mode 100644 .sqlx/query-28a6772da782aeab44de5b1ab38dcfdaf596ff1b172b29d02008f38ec680befc.json delete mode 100644 .sqlx/query-2919b493c38a046808ace3dfc0bb9f3b75ed64146de924cd5410374b6e560ffb.json delete mode 100644 .sqlx/query-295429ee6c6e6a6a53e2942286825522d8a6d4ae3cd90d12955d9083b4532ca9.json delete mode 100644 .sqlx/query-29ec564f478f99e306a62409f06d01d638cce4e957266188c7828dc83b9c1c95.json delete mode 100644 .sqlx/query-2a99974dd884c439c750b857f54631d370f2c20ca7e76b43f226a4dd09c130f0.json create mode 100644 .sqlx/query-2ef602ad84401b9348d21b1bd132aead3e7758b38e3f38f455e235315b2a3587.json create mode 100644 .sqlx/query-30b3e633f137345161d1dcd19ba11833ecb46fef745ab93bef2ddd269711b0d0.json create mode 100644 .sqlx/query-32d82daee7679614978ebc87fe801ccd40d62d3a581f9da0389cc6d0cf055e6e.json create mode 100644 .sqlx/query-35cc4ceeefd6872400468763f6f70d25cf03b0adef1a1d93b2ef58a9a3a3512d.json create mode 100644 .sqlx/query-35f2e11086a92c38a586001bde805faf78f0d4e0451dfe529c2b2378003dc0eb.json delete mode 100644 .sqlx/query-3af958b1cafebd4bdbe84a11a198072866c31eb22e3dd09ef9ddc17a0c94ad80.json create mode 100644 .sqlx/query-3bf4c96a5e4898c8d0019c61b83afc03c20d6bd0855487ab3d9703264b248b69.json create mode 100644 .sqlx/query-3ce6fa217db9587dcc99b63bdbddff9e0e25bbfefff115efee864f63de858f52.json create mode 100644 .sqlx/query-3fe0c48c7da4c7de37e24a85c8d50b8ca34e14cc61193b276981fe8b21509f3b.json create mode 100644 .sqlx/query-4102ff057176472775f55126c4d91a598f454c0ff87f7d68c363682e0ba16265.json delete mode 100644 .sqlx/query-410b34079c9d2e443b87e0b5b0c7f15513e3372366172ef010cf08e498994c8b.json delete mode 100644 .sqlx/query-413fd4d171ff85e073fc19aa7d1c55daf2af68798d01c105963f27edd115682e.json create mode 100644 .sqlx/query-4384972ed44753b56c9f5d579a78f3dcf46330e987f50ab408b4320b1c821ccf.json create mode 100644 .sqlx/query-458aaaa26f968320740bbeb0e16683d6b0f6adde8e4703cbf7b8070e787025b4.json delete mode 100644 .sqlx/query-461fa4776033923298171da2de4ee2871658c9eb488efa84784e2fcc6f00441e.json delete mode 100644 .sqlx/query-4a3efe17ed3e0fa24aaa21c06471dd240ff7cfcbc2f44cdba6ece1675b5064ed.json create mode 100644 .sqlx/query-4abe269febbc73d0757a6c494fc3960e6f98ad4e0b32b297959f10a51ef7b627.json delete mode 100644 .sqlx/query-4b747395c48682c15da802e576e637dfa6d697206896e963abd2281ba910619a.json create mode 100644 .sqlx/query-4be72c342832bc472a2b9f4fb3e17e1fe2bcb22ec317f62869f3e037c7167dbb.json delete mode 100644 .sqlx/query-4bf6caaf1078e497274de0cc1fc417f1e2505057b7ed3e56f3921191befa2205.json delete mode 100644 .sqlx/query-4d173dc00623dbb15d982fa725d1082a3459e408b4d3e9d7c1f4dd6408897010.json delete mode 100644 .sqlx/query-4f978835222f93d17ba4e5e3102cf0d9804cbc1a24d0549e32f58f6c7189758b.json delete mode 100644 .sqlx/query-5758dc7c2634b3a00cf929c79df1a24e6834a0da52952a5b2f21221681886d7d.json delete mode 100644 .sqlx/query-57c76d4195d5a4778ffdd1374bd9160013287aa0cbbab8c5204b5dbe3e54a3c3.json create mode 100644 .sqlx/query-586414e6a79736b8bec1ce93ce5841474e02a2c92cc2391623ec13a3a55c22d2.json delete mode 100644 .sqlx/query-5b585db1363cc1abea34aa95ffb209031b74c7233cbba37bbd6792ecca9150e2.json create mode 100644 .sqlx/query-5cdfe7c1f74f11ce11c5ff7564adf74dbd2f165090191fe767638988f50d04f7.json delete mode 100644 .sqlx/query-5ce3f0fefb05bf54aeca419eda8c0d35586cd07a24fd6232df173e3ffc2b69f7.json delete mode 100644 .sqlx/query-5e9605bd63329bb489428f0a91cb86cf05f8c670c4760ce727add4a53a77a75d.json create mode 100644 .sqlx/query-5f4046cf0e927266774b07f135687e848a82ef3eda14b09611af597fbfcd8119.json delete mode 100644 .sqlx/query-60dc717206e2519ccacbbb8c4e9f273da0d49943754ebf8e715988cea21fe3ae.json create mode 100644 .sqlx/query-613e7465f9259a6b45088b37712c02527017a18c8b8dc89b73f0a99a1e481357.json delete mode 100644 .sqlx/query-619bbdf9be92fbc7252df50e6900b32a67eedf844d63c3192a1134bcc84d780b.json delete mode 100644 .sqlx/query-644c3bd122fd893b4f21221b6323578010e49272cfbb012aa35dcaf62e4f4988.json create mode 100644 .sqlx/query-684642237c10edcb617a4a7af9fc654c9cf6a84870f035994aacdca12add153d.json create mode 100644 .sqlx/query-689a6f70c4cb8dd1c6cf5d0c2daac32b86b78b07c63035550c1f4d409274c83f.json delete mode 100644 .sqlx/query-6b15cd2e3955588956ba22aa093cb605e246efe53cc29338388d8728fa432e57.json delete mode 100644 .sqlx/query-6b8c5c6ee229c4fd918f9f4d4438e97d501e2105a7e386425f3d2d3240e29511.json create mode 100644 .sqlx/query-6c992194adc80ae22a9df8f76b52e202958f9a73a4abef3e9f9a2e803623ab29.json create mode 100644 .sqlx/query-6e29ef7bd2852175269936b10162aa44319f859cf6b96e23faadfaedde151206.json delete mode 100644 .sqlx/query-7015463e67a587c677bf5f192ba2aa2b75302feb99d520fdef4bb3a709d28379.json delete mode 100644 .sqlx/query-7051eadf2365278e99621914872204ec02d5abccf54481ef54e68eccf7ae11f9.json delete mode 100644 .sqlx/query-70e572793c84d42e1a734edd7244decda367afdf727f26c41467d8ede3b0a4c8.json create mode 100644 .sqlx/query-76dfec232fba0205292eb44f9cfbce3ef7990746beae4dfba722537a1b4dcae2.json create mode 100644 .sqlx/query-78b4b7396b4c1c1d9fad170c2a0dc9ef2b6beb40bee741f0a113d0e2bb2045fa.json delete mode 100644 .sqlx/query-7e106ee0128fc4597f89a594f3f72b504edf1ea8c4d20a60117b4c0a37e4ba33.json create mode 100644 .sqlx/query-7fb134809986dbcbf2a0a961565e1c6e266f2e8d6d8703d3489bd63e7a38339e.json create mode 100644 .sqlx/query-81363143b3f061edbb43de27b35e4ea5fef8ab09ca089855c2e0ad15f96cfd2c.json create mode 100644 .sqlx/query-81600d5b790d61b7473d7dfa56f387bbc4b4dcd7ddcc42548574e2b59f259cc2.json delete mode 100644 .sqlx/query-816d3e64cf350633d70c14241f20487a9210946793a8a41d6e2e7b8536c59559.json create mode 100644 .sqlx/query-82e94df5f0f7cee8b48a9e6d6101dcf109ec97a5e3dcdb330ee1ae90e021839f.json create mode 100644 .sqlx/query-840e5fbc7c16b6c851f4a84dad5dfdf95115ab50fb24a2aeb3870956a1497960.json create mode 100644 .sqlx/query-8536e75e37b9c140002f224528129a3d85dc52936951dd65734949c07b94253f.json delete mode 100644 .sqlx/query-856e567f6cccd8efc97cb10f18d5fc4ba1a151646c05e6b8275ed47caa129fc8.json delete mode 100644 .sqlx/query-85ddf6296df989403dd05ce8fce41dc77b26b68ca0ab101df4cf3a7ab21fe502.json create mode 100644 .sqlx/query-895eb07c1002a17a3dbdaa51ced9c6446dbddb46dc50e93c3eca1b72be6ecdcd.json delete mode 100644 .sqlx/query-8a3d02278ef22120d26957fe604cd0cb95058b1baab16f8f457a52a7c5be02a6.json delete mode 100644 .sqlx/query-8b4690ba53bdc8815dec7ce06c77505b8fd06507bdc16a31aaabdc21cbc33c5c.json create mode 100644 .sqlx/query-8cabd066e4170413b7d0291f14ba1f43ea4cfd76d1b96f5ce7684efde79e9312.json delete mode 100644 .sqlx/query-8d3810386941bcc9d19160db06d27ed9e199a44d5c6261f924efc092973eaac0.json delete mode 100644 .sqlx/query-8f84d596eb12222a16f3137fb2f5e22d8585d2550bb5ea22761294cc57432d9f.json delete mode 100644 .sqlx/query-93c11f744897ea7403054bafc7f44002859e31d6d0899a644a3cd9c62c8dab67.json delete mode 100644 .sqlx/query-943f1db531b69c702501283fdaaed62fb054e9add442bc1a0ccd851d493c1292.json delete mode 100644 .sqlx/query-97829829cd0cb4cba104522aaadacdef534b7bed029494180df79eeb01d11b86.json create mode 100644 .sqlx/query-9809fae846997424ccd2d37c90622d568b3c71b31c662b543a90d57d2f0075e9.json create mode 100644 .sqlx/query-993e6fa2ea86bf9dd8333b682e9bb2c728dc7cd3f2e7e8787d26c4f73dec405c.json delete mode 100644 .sqlx/query-9b99a14fd1f97d84704a85c0ecabc8fe7621e783dc86af4af9ccaccf2263b0b3.json delete mode 100644 .sqlx/query-9f2b0f4b8dd82f81ffc0802eca98ff38ae754f197a493183d29003daf53c1912.json create mode 100644 .sqlx/query-a1d52b140cb8e9103ae7c4d8503feac85735e87fc7031987ec5b052c62f40791.json delete mode 100644 .sqlx/query-a59c89fc04a16acca91715ef62fc747cb9685f805763b8628f8a7433bddbd17e.json create mode 100644 .sqlx/query-a7ec5794b6cd37c1318ecccc96fb1a3a58b9b9577a955d654cc198e5283f9e31.json delete mode 100644 .sqlx/query-a9f3579fc327fad0377051402d61272644c6d0521b0217d32199150c7b5d84be.json create mode 100644 .sqlx/query-aaef6571ce9e1c5ea71c70df6d98b47b2f64b5d635f0219e8930a21a1c62a57f.json create mode 100644 .sqlx/query-acadb66024ea14bee925ff20f3873bcab990ef65358dcb099427a468a039ec27.json create mode 100644 .sqlx/query-ad5b266a6cb1ef5829dc1c20795559e9732b78d90183a72109537bacd7ca3fb6.json delete mode 100644 .sqlx/query-ad774fbed6cae7374e7b6a846b8f47c323d58ecb7b5a5720a887e00cfe66041c.json create mode 100644 .sqlx/query-b099dcc0d81fb281e3116a19b5dfd976b0649521feb42c881acd8f8be09406f0.json delete mode 100644 .sqlx/query-b48d717f1f3713fcc2d11baa83d8ce24d1b84cb148c87fdcbda5f69e9c267743.json create mode 100644 .sqlx/query-b639f68669f95f788fc14c2819e0a7c786032576dd87990c42d1fa23d37bd730.json delete mode 100644 .sqlx/query-b76f4e37b51afe15519f57c4046282090c0b874557bf646ef9b2e7c623c28cde.json delete mode 100644 .sqlx/query-b8c1052e2e35b3c762d36e1123d9b0ec18617974eea17f926a4ea4064549854f.json delete mode 100644 .sqlx/query-b972949428e68d37ad3075ff6c15d470924d68eccf4acfe0ca71907d46f7ea87.json delete mode 100644 .sqlx/query-bc7ddaca8a13c9efbd3bb5e34ad5a54230203a1e51a54b03f7a9b9dd622132fb.json delete mode 100644 .sqlx/query-bccaa81b9d8979c9313a585be1ab21a2a87033ee69ee5a5e9498062e4e49722c.json delete mode 100644 .sqlx/query-be4324ba43c80e343b654c60768b612494c1374783989d5a1353a99cb39cbe90.json create mode 100644 .sqlx/query-c2ad5b81e8dbab0c513e46a2e0f01e7f4b88faf7277f580b0115c3006579b41e.json delete mode 100644 .sqlx/query-c78e8396f3ba8b01bf5acaee1e4fe5dbe67bda983ff018de9948ac6eae5719a7.json delete mode 100644 .sqlx/query-ca026c702e1f298987fddaeef413f80ef1145b31d56d43bb780b8db500f4c6c2.json create mode 100644 .sqlx/query-cc7c5ec6442985bd444e8452da2e690472890d20b8fd1ec2ea67ccdfa5618480.json delete mode 100644 .sqlx/query-cdaf7a8cb2657d0c7cd05d9219f6be599279b1adc3978387c42eca5eb7fd23ad.json create mode 100644 .sqlx/query-d18b1cf1500e819d96fdfcbd8bedd3aa11047cf03216ca57420ea05ea8c6f080.json create mode 100644 .sqlx/query-d2b4884649a5e2b3d4b878dbd3d2216ca9e12ad42ce0dd80f2e300faa940c51a.json create mode 100644 .sqlx/query-d2c0664af1f1d6a3f1ee9e471042791787d939db1493f3be3bdbd1b991e51ec7.json delete mode 100644 .sqlx/query-d4be79248c1b060067e1a5bd4252212a24bcedbb15b4b011dbc382ff2251234c.json delete mode 100644 .sqlx/query-d822d41544f6532882c080e7f53aaa7137dde5b5dfd9f921dec7ad0efe9b7e0a.json create mode 100644 .sqlx/query-d855e7b6043f446da20272d8bf1e6682c2e39ef36e523ddfc61514368acfe527.json create mode 100644 .sqlx/query-d89bd67cebf11fbf5c4a3150ca3a2996735aeb9f396e71d81fa3fd312abd18ef.json create mode 100644 .sqlx/query-dd7225908a5194c0acc8920ffe17259c0eff4236af28441bf62a8b83e267e8cc.json create mode 100644 .sqlx/query-e1f4ba6c8e47070ce25b384cb18a2d41ec9221e5cf5cabc375cb3b77314dd660.json delete mode 100644 .sqlx/query-e35f9b20d7340b4c59889732d552af772028c349bd46e073b15a6055364b059f.json delete mode 100644 .sqlx/query-e38cf91855fc4c311b74f695bf6f06900f9650c01673379f6eb26e0b42df1487.json create mode 100644 .sqlx/query-e3e37a00e9f5aa573c3cf0e58dc549e8be4f1e8d067592c7197dbbfade4ad3c3.json delete mode 100644 .sqlx/query-e42e6f66a9e9eaf49e3d2b554ed0069bcfbfe61ea8befde895bae56980e4f778.json delete mode 100644 .sqlx/query-e4edc339cde1b12bdbe5e8cc761d49e37541daf536c2ce5b13d37bf7594dd208.json create mode 100644 .sqlx/query-e70ee66c7c9c4b23fe6493ac8ffc29c70db8a55973912b740dbbda6d732e3ccb.json create mode 100644 .sqlx/query-e729c266734237d11e1c75aabb5a5734a015f88dd88e5aa6c700f0d653342ab4.json create mode 100644 .sqlx/query-e98bc4e8e2a638f8ab6975434ce4a0fb878766c133aa944f6a7336e247621da2.json create mode 100644 .sqlx/query-ea6c5ec76a1c29d0c36e2cb907346ba9fd62eb88a891d9e4927f42098a859011.json create mode 100644 .sqlx/query-ecbc26ef819413f43919d03094e879d93406d56b2bfd546be60ffa966e24bc28.json create mode 100644 .sqlx/query-eea5def8af7d059a354e9b1ff5f6661f274cf6e387b3903e5bd75cd1e48074a4.json create mode 100644 .sqlx/query-f2aee52b49b4f457b919560fc37a61daed0de1f5acbe328a967fea7083598ccf.json delete mode 100644 .sqlx/query-f467fa102b6de4f9ab23a9820e82ee8a6efd972c54447ad4aedd244c78dab623.json create mode 100644 .sqlx/query-f5d5386a4494093b1a9e07e67df3f92ba7abab707c2ba749fd11ae68bb22aad2.json delete mode 100644 .sqlx/query-f8207c8b05da03ca3f2c792ba7019ba207e7da6c97254a23c2f5e2773ff32a13.json create mode 100644 .sqlx/query-fb01268ec816e86f67008ba6c503d6c718be4903b6fd194d7b04a9c64a4a8128.json delete mode 100644 .sqlx/query-fb1b7a9e183976ff69d1ad9b30bf8f67fc6a75b08939a2ca750a917bcd6b4298.json delete mode 100644 .sqlx/query-fb74bff60db4204bb7b88d4825254d76551d25a16eebec367d92f5ee987d2ade.json delete mode 100644 .sqlx/query-fbeb58fe9142da315b1101249e6d0c83f4e7f42e239c67fb2780a2791beb849d.json create mode 160000 3rd/bore create mode 100644 src/cli/tunnel_cmd.rs create mode 100644 src/dto/user_device_code.rs create mode 100644 src/models/user_device_code.rs create mode 100644 src/services/user_device_code.rs diff --git a/.gitignore b/.gitignore index 562816dc..29935555 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ frontend/ dev-docs/ fly.toml + +/3rd/ diff --git a/.sqlx/query-008bb29097e0580b36adb309f72a593506d21bf6ae941a7ebcc52365c84a8b1b.json b/.sqlx/query-008bb29097e0580b36adb309f72a593506d21bf6ae941a7ebcc52365c84a8b1b.json new file mode 100644 index 00000000..f237a98b --- /dev/null +++ b/.sqlx/query-008bb29097e0580b36adb309f72a593506d21bf6ae941a7ebcc52365c84a8b1b.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `content_revisions` (`id`, `content_type`, `record_id`, `revision_number`, `snapshot`, `created_by`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "008bb29097e0580b36adb309f72a593506d21bf6ae941a7ebcc52365c84a8b1b" +} diff --git a/.sqlx/query-00f6bad9968219ec438c35106c208e4c4d2c1c45f2bbffa52e54ac4a34f96519.json b/.sqlx/query-00f6bad9968219ec438c35106c208e4c4d2c1c45f2bbffa52e54ac4a34f96519.json deleted file mode 100644 index bc19ae95..00000000 --- a/.sqlx/query-00f6bad9968219ec438c35106c208e4c4d2c1c45f2bbffa52e54ac4a34f96519.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO reusable_blocks (id, name, block_type, content, description, created_by, updated_by, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)", - "describe": { - "columns": [], - "parameters": { - "Right": 9 - }, - "nullable": [] - }, - "hash": "00f6bad9968219ec438c35106c208e4c4d2c1c45f2bbffa52e54ac4a34f96519" -} diff --git a/.sqlx/query-0218fef502ae157fa71b54e879f03778459a13f196e241481b5ff2289c9861a1.json b/.sqlx/query-0218fef502ae157fa71b54e879f03778459a13f196e241481b5ff2289c9861a1.json deleted file mode 100644 index f4810c62..00000000 --- a/.sqlx/query-0218fef502ae157fa71b54e879f03778459a13f196e241481b5ff2289c9861a1.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO wallet_outbox (id, user_id, currency, amount, entry_type, tx_type, transaction_no, reference_type, reference_id, metadata, status, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)", - "describe": { - "columns": [], - "parameters": { - "Right": 14 - }, - "nullable": [] - }, - "hash": "0218fef502ae157fa71b54e879f03778459a13f196e241481b5ff2289c9861a1" -} diff --git a/.sqlx/query-05732b48dbf7a440862fda2158c07b94ab60a33891316c437e88f8b2ac3aef5d.json b/.sqlx/query-05732b48dbf7a440862fda2158c07b94ab60a33891316c437e88f8b2ac3aef5d.json deleted file mode 100644 index 89bf1db4..00000000 --- a/.sqlx/query-05732b48dbf7a440862fda2158c07b94ab60a33891316c437e88f8b2ac3aef5d.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO pages (id, title, slug, content, blocks, meta_title, meta_description, og_image, template, parent_id, sort_order, status, created_by, updated_by, cover_image, published_at, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18)", - "describe": { - "columns": [], - "parameters": { - "Right": 18 - }, - "nullable": [] - }, - "hash": "05732b48dbf7a440862fda2158c07b94ab60a33891316c437e88f8b2ac3aef5d" -} diff --git a/.sqlx/query-0745f93cf3ba9ee9a8763e8f609d59d31c4feade2e729ab5934ad2df2709fb34.json b/.sqlx/query-0745f93cf3ba9ee9a8763e8f609d59d31c4feade2e729ab5934ad2df2709fb34.json deleted file mode 100644 index 3964d722..00000000 --- a/.sqlx/query-0745f93cf3ba9ee9a8763e8f609d59d31c4feade2e729ab5934ad2df2709fb34.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO users (id, username, created_at, updated_at, role, status, registered_via) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "0745f93cf3ba9ee9a8763e8f609d59d31c4feade2e729ab5934ad2df2709fb34" -} diff --git a/.sqlx/query-07eb8fa962146348f40945d43a4093233a6e3c1908a423b8758ff6c4e6e65697.json b/.sqlx/query-07eb8fa962146348f40945d43a4093233a6e3c1908a423b8758ff6c4e6e65697.json new file mode 100644 index 00000000..b9b1e62a --- /dev/null +++ b/.sqlx/query-07eb8fa962146348f40945d43a4093233a6e3c1908a423b8758ff6c4e6e65697.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `reusable_blocks` (`id`, `name`, `block_type`, `content`, `description`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 9 + }, + "nullable": [] + }, + "hash": "07eb8fa962146348f40945d43a4093233a6e3c1908a423b8758ff6c4e6e65697" +} diff --git a/.sqlx/query-0a8c9719e5108f9a4d9c6962fa3cf4e3145668e2182abf297a4d1d4721d9954a.json b/.sqlx/query-0a8c9719e5108f9a4d9c6962fa3cf4e3145668e2182abf297a4d1d4721d9954a.json new file mode 100644 index 00000000..254b8202 --- /dev/null +++ b/.sqlx/query-0a8c9719e5108f9a4d9c6962fa3cf4e3145668e2182abf297a4d1d4721d9954a.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_transactions` (`id`, `payment_order_id`, `order_id`, `user_id`, `tx_type`, `amount`, `currency`, `provider_tx_id`, `status`, `raw_payload`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 11 + }, + "nullable": [] + }, + "hash": "0a8c9719e5108f9a4d9c6962fa3cf4e3145668e2182abf297a4d1d4721d9954a" +} diff --git a/.sqlx/query-0ae2f2a67fea764cb51fabd168f8909ddbe2e6dd1739005d7dfea832decf99f6.json b/.sqlx/query-0ae2f2a67fea764cb51fabd168f8909ddbe2e6dd1739005d7dfea832decf99f6.json deleted file mode 100644 index 97cf071c..00000000 --- a/.sqlx/query-0ae2f2a67fea764cb51fabd168f8909ddbe2e6dd1739005d7dfea832decf99f6.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO wallet_transactions (id, wallet_id, user_id, entry_type, amount, balance_after, tx_type, currency, transaction_no, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)", - "describe": { - "columns": [], - "parameters": { - "Right": 10 - }, - "nullable": [] - }, - "hash": "0ae2f2a67fea764cb51fabd168f8909ddbe2e6dd1739005d7dfea832decf99f6" -} diff --git a/.sqlx/query-0aebf25ff8e3470f655e0284c35b11a5584109a3180da235347841b3250de296.json b/.sqlx/query-0aebf25ff8e3470f655e0284c35b11a5584109a3180da235347841b3250de296.json deleted file mode 100644 index 578ff867..00000000 --- a/.sqlx/query-0aebf25ff8e3470f655e0284c35b11a5584109a3180da235347841b3250de296.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO product_categories (id, name, slug, description, cover_image, meta_title, meta_description, og_title, og_description, og_image, parent_id, sort_order, created_by, updated_by, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16)", - "describe": { - "columns": [], - "parameters": { - "Right": 16 - }, - "nullable": [] - }, - "hash": "0aebf25ff8e3470f655e0284c35b11a5584109a3180da235347841b3250de296" -} diff --git a/.sqlx/query-0b3a113ccbdcbb6b490fceab7076cd98d8eee83dbef642e02b040880cfdbe527.json b/.sqlx/query-0b3a113ccbdcbb6b490fceab7076cd98d8eee83dbef642e02b040880cfdbe527.json new file mode 100644 index 00000000..6d63702e --- /dev/null +++ b/.sqlx/query-0b3a113ccbdcbb6b490fceab7076cd98d8eee83dbef642e02b040880cfdbe527.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `wallet_outbox` (`id`, `user_id`, `currency`, `amount`, `entry_type`, `tx_type`, `transaction_no`, `reference_type`, `reference_id`, `metadata`, `status`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 14 + }, + "nullable": [] + }, + "hash": "0b3a113ccbdcbb6b490fceab7076cd98d8eee83dbef642e02b040880cfdbe527" +} diff --git a/.sqlx/query-0d9cf697203f12beace57613de3119777c9bd76a94b971019c5f09a1b639b211.json b/.sqlx/query-0d9cf697203f12beace57613de3119777c9bd76a94b971019c5f09a1b639b211.json deleted file mode 100644 index 6cc9ecf9..00000000 --- a/.sqlx/query-0d9cf697203f12beace57613de3119777c9bd76a94b971019c5f09a1b639b211.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_refunds (id, payment_order_id, order_id, user_id, amount, currency, reason, provider_refund_id, status, payment_tx_id, metadata, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)", - "describe": { - "columns": [], - "parameters": { - "Right": 13 - }, - "nullable": [] - }, - "hash": "0d9cf697203f12beace57613de3119777c9bd76a94b971019c5f09a1b639b211" -} diff --git a/.sqlx/query-0db51743f765df9c62f1ffcf664231f2705ed5bfd3acef58c99c734555a0a1ec.json b/.sqlx/query-0db51743f765df9c62f1ffcf664231f2705ed5bfd3acef58c99c734555a0a1ec.json new file mode 100644 index 00000000..428737dc --- /dev/null +++ b/.sqlx/query-0db51743f765df9c62f1ffcf664231f2705ed5bfd3acef58c99c734555a0a1ec.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_channels` (`id`, `provider`, `name`, `is_live`, `credentials`, `webhook_secret`, `settings`, `is_active`, `sort_order`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 12 + }, + "nullable": [] + }, + "hash": "0db51743f765df9c62f1ffcf664231f2705ed5bfd3acef58c99c734555a0a1ec" +} diff --git a/.sqlx/query-0e48b64b6b62dc90a733a3243f53664435d0f23191806ad6cc168bb160e622ca.json b/.sqlx/query-0e48b64b6b62dc90a733a3243f53664435d0f23191806ad6cc168bb160e622ca.json new file mode 100644 index 00000000..8d5cdfb7 --- /dev/null +++ b/.sqlx/query-0e48b64b6b62dc90a733a3243f53664435d0f23191806ad6cc168bb160e622ca.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `coupons` (`id`, `code`, `title`, `coupon_type`, `value`, `min_order`, `max_uses`, `used_count`, `max_uses_per_user`, `starts_at`, `expires_at`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 14 + }, + "nullable": [] + }, + "hash": "0e48b64b6b62dc90a733a3243f53664435d0f23191806ad6cc168bb160e622ca" +} diff --git a/.sqlx/query-0e65ccc5bd9750ba79ffcfac3103b57f1129b514c920afe834270739a6630a15.json b/.sqlx/query-0e65ccc5bd9750ba79ffcfac3103b57f1129b514c920afe834270739a6630a15.json new file mode 100644 index 00000000..815e4dcd --- /dev/null +++ b/.sqlx/query-0e65ccc5bd9750ba79ffcfac3103b57f1129b514c920afe834270739a6630a15.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `product_comments` (`id`, `product_id`, `order_id`, `user_id`, `rating`, `title`, `content`, `images`, `status`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 11 + }, + "nullable": [] + }, + "hash": "0e65ccc5bd9750ba79ffcfac3103b57f1129b514c920afe834270739a6630a15" +} diff --git a/.sqlx/query-0f7df02f4e4e2d810a2fec17a14bf23024dde72e97b064426ad3072f00ba0133.json b/.sqlx/query-0f7df02f4e4e2d810a2fec17a14bf23024dde72e97b064426ad3072f00ba0133.json deleted file mode 100644 index a11d1190..00000000 --- a/.sqlx/query-0f7df02f4e4e2d810a2fec17a14bf23024dde72e97b064426ad3072f00ba0133.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO user_credentials (id, user_id, auth_type, identifier, credential_data, verified, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "0f7df02f4e4e2d810a2fec17a14bf23024dde72e97b064426ad3072f00ba0133" -} diff --git a/.sqlx/query-10680b0d5b4ec5ce92e347b62ad2564eab8a1d0d45b5b95cf6c43f1f23b55041.json b/.sqlx/query-10680b0d5b4ec5ce92e347b62ad2564eab8a1d0d45b5b95cf6c43f1f23b55041.json deleted file mode 100644 index 01feca80..00000000 --- a/.sqlx/query-10680b0d5b4ec5ce92e347b62ad2564eab8a1d0d45b5b95cf6c43f1f23b55041.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO wallet_transactions (id, wallet_id, user_id, entry_type, amount, balance_after, tx_type, currency, transaction_no, related_tx_id, reference_type, reference_id, counterparty_wallet_id, metadata, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15)", - "describe": { - "columns": [], - "parameters": { - "Right": 15 - }, - "nullable": [] - }, - "hash": "10680b0d5b4ec5ce92e347b62ad2564eab8a1d0d45b5b95cf6c43f1f23b55041" -} diff --git a/.sqlx/query-1255531a58a24e68aae5c6248964623a05d2f1ca4516fe11e30244c78e015bab.json b/.sqlx/query-1255531a58a24e68aae5c6248964623a05d2f1ca4516fe11e30244c78e015bab.json new file mode 100644 index 00000000..bebd8bda --- /dev/null +++ b/.sqlx/query-1255531a58a24e68aae5c6248964623a05d2f1ca4516fe11e30244c78e015bab.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `shipping_templates` (`id`, `name`, `type`, `first_unit`, `first_price`, `additional_unit`, `additional_price`, `free_shipping_amount`, `regions`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 12 + }, + "nullable": [] + }, + "hash": "1255531a58a24e68aae5c6248964623a05d2f1ca4516fe11e30244c78e015bab" +} diff --git a/.sqlx/query-13d326ca41c1ccd5dde5fc46c9014eeb10050ec463344d7559b4584488b6d6cd.json b/.sqlx/query-13d326ca41c1ccd5dde5fc46c9014eeb10050ec463344d7559b4584488b6d6cd.json new file mode 100644 index 00000000..e9807300 --- /dev/null +++ b/.sqlx/query-13d326ca41c1ccd5dde5fc46c9014eeb10050ec463344d7559b4584488b6d6cd.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_refunds` (`id`, `payment_order_id`, `order_id`, `user_id`, `amount`, `currency`, `reason`, `provider_refund_id`, `status`, `payment_tx_id`, `metadata`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 13 + }, + "nullable": [] + }, + "hash": "13d326ca41c1ccd5dde5fc46c9014eeb10050ec463344d7559b4584488b6d6cd" +} diff --git a/.sqlx/query-14997d4d48ef091021b470549b98044e905a2505e00a31cef49ca71f3e9de374.json b/.sqlx/query-14997d4d48ef091021b470549b98044e905a2505e00a31cef49ca71f3e9de374.json deleted file mode 100644 index 956d6810..00000000 --- a/.sqlx/query-14997d4d48ef091021b470549b98044e905a2505e00a31cef49ca71f3e9de374.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO posts (id, title, slug, content, excerpt, cover_image, image_ids, status, created_by, updated_by, category_id, meta_title, meta_description, og_title, og_description, og_image, canonical_url, published_at, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21)", - "describe": { - "columns": [], - "parameters": { - "Right": 21 - }, - "nullable": [] - }, - "hash": "14997d4d48ef091021b470549b98044e905a2505e00a31cef49ca71f3e9de374" -} diff --git a/.sqlx/query-1518fec9a4ca05ecc6d88bdb621d00f89c9a9d529b0c63c90b17d1efadb45eaf.json b/.sqlx/query-1518fec9a4ca05ecc6d88bdb621d00f89c9a9d529b0c63c90b17d1efadb45eaf.json deleted file mode 100644 index 7ac36d8a..00000000 --- a/.sqlx/query-1518fec9a4ca05ecc6d88bdb621d00f89c9a9d529b0c63c90b17d1efadb45eaf.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO products (id, category_id, title, description, cover_url, product_type, fulfillment_type, delivery_hook, weight, price, currency, attributes, sort_order, slug, content, image_ids, original_price, specs, unit, min_purchase, max_purchase, virtual_sales, meta_title, meta_description, og_title, og_description, og_image, stock, cost_price, sale_price, has_variants, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32, ?33)", - "describe": { - "columns": [], - "parameters": { - "Right": 33 - }, - "nullable": [] - }, - "hash": "1518fec9a4ca05ecc6d88bdb621d00f89c9a9d529b0c63c90b17d1efadb45eaf" -} diff --git a/.sqlx/query-15958b27a50ae6952a8aea322388509321e89efebc0390b61066077c81f02ed4.json b/.sqlx/query-15958b27a50ae6952a8aea322388509321e89efebc0390b61066077c81f02ed4.json new file mode 100644 index 00000000..6d49a676 --- /dev/null +++ b/.sqlx/query-15958b27a50ae6952a8aea322388509321e89efebc0390b61066077c81f02ed4.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `comments` (`id`, `post_id`, `created_by`, `updated_by`, `nickname`, `email`, `content`, `parent_id`, `created_at`, `updated_at`, `status`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 12 + }, + "nullable": [] + }, + "hash": "15958b27a50ae6952a8aea322388509321e89efebc0390b61066077c81f02ed4" +} diff --git a/.sqlx/query-176ad453da277a6ee8eaa0c4ed91097b03eb5e84a5a7395a3eebf364f6131939.json b/.sqlx/query-176ad453da277a6ee8eaa0c4ed91097b03eb5e84a5a7395a3eebf364f6131939.json new file mode 100644 index 00000000..52d912ce --- /dev/null +++ b/.sqlx/query-176ad453da277a6ee8eaa0c4ed91097b03eb5e84a5a7395a3eebf364f6131939.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `workflow_instances` (`id`, `definition_id`, `status`, `context`, `triggered_by`, `started_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "176ad453da277a6ee8eaa0c4ed91097b03eb5e84a5a7395a3eebf364f6131939" +} diff --git a/.sqlx/query-1932d42b044e095786d168ee193722dbc41421dd3a7874beffc2b6c4ce8b273b.json b/.sqlx/query-1932d42b044e095786d168ee193722dbc41421dd3a7874beffc2b6c4ce8b273b.json new file mode 100644 index 00000000..0e98f590 --- /dev/null +++ b/.sqlx/query-1932d42b044e095786d168ee193722dbc41421dd3a7874beffc2b6c4ce8b273b.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `jobs` (`id`, `job_type`, `payload`, `status`, `max_attempts`, `run_after`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "1932d42b044e095786d168ee193722dbc41421dd3a7874beffc2b6c4ce8b273b" +} diff --git a/.sqlx/query-19fa9bb6894b2ebb1ef45fdd3de33e90982004c99a5b5c44e7b149632cf57ffc.json b/.sqlx/query-19fa9bb6894b2ebb1ef45fdd3de33e90982004c99a5b5c44e7b149632cf57ffc.json new file mode 100644 index 00000000..50ef7fae --- /dev/null +++ b/.sqlx/query-19fa9bb6894b2ebb1ef45fdd3de33e90982004c99a5b5c44e7b149632cf57ffc.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `password_reset_tokens` (`id`, `user_id`, `token`, `expires_at`, `created_at`) VALUES (?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 5 + }, + "nullable": [] + }, + "hash": "19fa9bb6894b2ebb1ef45fdd3de33e90982004c99a5b5c44e7b149632cf57ffc" +} diff --git a/.sqlx/query-1a6350d43916712692fd0b7abc6ba41a6df71a318dcfdd3258827eb1d1b04f6e.json b/.sqlx/query-1a6350d43916712692fd0b7abc6ba41a6df71a318dcfdd3258827eb1d1b04f6e.json deleted file mode 100644 index e014ece4..00000000 --- a/.sqlx/query-1a6350d43916712692fd0b7abc6ba41a6df71a318dcfdd3258827eb1d1b04f6e.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO api_tokens (id, user_id, name, token_hash, token_prefix, scopes, expires_at, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "1a6350d43916712692fd0b7abc6ba41a6df71a318dcfdd3258827eb1d1b04f6e" -} diff --git a/.sqlx/query-1a804863d5148834f4290bb2de855d13787e0d15c492dffe8b9e3449217e4290.json b/.sqlx/query-1a804863d5148834f4290bb2de855d13787e0d15c492dffe8b9e3449217e4290.json deleted file mode 100644 index 487b1839..00000000 --- a/.sqlx/query-1a804863d5148834f4290bb2de855d13787e0d15c492dffe8b9e3449217e4290.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO order_items (id, order_id, product_id, variant_id, title, description, sku, unit_price, quantity, subtotal, tax_amount, cover_url, attributes, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)", - "describe": { - "columns": [], - "parameters": { - "Right": 14 - }, - "nullable": [] - }, - "hash": "1a804863d5148834f4290bb2de855d13787e0d15c492dffe8b9e3449217e4290" -} diff --git a/.sqlx/query-1b2cfe34aca82f161903a831ca60aae8866a69faee34ec74ee6bdbc24a731ec1.json b/.sqlx/query-1b2cfe34aca82f161903a831ca60aae8866a69faee34ec74ee6bdbc24a731ec1.json new file mode 100644 index 00000000..d20d403a --- /dev/null +++ b/.sqlx/query-1b2cfe34aca82f161903a831ca60aae8866a69faee34ec74ee6bdbc24a731ec1.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `audit_log` (`id`, `actor_id`, `actor_role`, `action`, `subject`, `subject_id`, `detail`, `ip_address`, `user_agent`, `created_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 11 + }, + "nullable": [] + }, + "hash": "1b2cfe34aca82f161903a831ca60aae8866a69faee34ec74ee6bdbc24a731ec1" +} diff --git a/.sqlx/query-1d5778e10a7793a37d585de2067f020060034da4444407dcd4e0ca15243e3bce.json b/.sqlx/query-1d5778e10a7793a37d585de2067f020060034da4444407dcd4e0ca15243e3bce.json new file mode 100644 index 00000000..dade662a --- /dev/null +++ b/.sqlx/query-1d5778e10a7793a37d585de2067f020060034da4444407dcd4e0ca15243e3bce.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_channels` (`id`, `provider`, `name`, `is_live`, `credentials`, `webhook_secret`, `settings`, `is_active`, `sort_order`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 11 + }, + "nullable": [] + }, + "hash": "1d5778e10a7793a37d585de2067f020060034da4444407dcd4e0ca15243e3bce" +} diff --git a/.sqlx/query-1e1792414b6404d99a5be854ebf90ab2ffd0ec63c7a5bbc1f53473fd94b4ebdb.json b/.sqlx/query-1e1792414b6404d99a5be854ebf90ab2ffd0ec63c7a5bbc1f53473fd94b4ebdb.json new file mode 100644 index 00000000..484987d4 --- /dev/null +++ b/.sqlx/query-1e1792414b6404d99a5be854ebf90ab2ffd0ec63c7a5bbc1f53473fd94b4ebdb.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `order_items` (`id`, `order_id`, `product_id`, `variant_id`, `title`, `description`, `sku`, `unit_price`, `quantity`, `subtotal`, `tax_amount`, `cover_url`, `attributes`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 14 + }, + "nullable": [] + }, + "hash": "1e1792414b6404d99a5be854ebf90ab2ffd0ec63c7a5bbc1f53473fd94b4ebdb" +} diff --git a/.sqlx/query-1fd8ce093c7d811d3f3256cda164189ffc85872376e00e68d4b5ada685b35f2d.json b/.sqlx/query-1fd8ce093c7d811d3f3256cda164189ffc85872376e00e68d4b5ada685b35f2d.json deleted file mode 100644 index cf05cca7..00000000 --- a/.sqlx/query-1fd8ce093c7d811d3f3256cda164189ffc85872376e00e68d4b5ada685b35f2d.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO posts (id, title, slug, content, excerpt, cover_image, image_ids, status, created_by, updated_by, category_id, meta_title, meta_description, og_title, og_description, og_image, canonical_url, published_at, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20)", - "describe": { - "columns": [], - "parameters": { - "Right": 20 - }, - "nullable": [] - }, - "hash": "1fd8ce093c7d811d3f3256cda164189ffc85872376e00e68d4b5ada685b35f2d" -} diff --git a/.sqlx/query-206ce47841a358a42e389045e779bedb28d04862fa971c0e968d125985820056.json b/.sqlx/query-206ce47841a358a42e389045e779bedb28d04862fa971c0e968d125985820056.json new file mode 100644 index 00000000..a8d220f1 --- /dev/null +++ b/.sqlx/query-206ce47841a358a42e389045e779bedb28d04862fa971c0e968d125985820056.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_refunds` (`id`, `payment_order_id`, `order_id`, `user_id`, `amount`, `currency`, `reason`, `provider_refund_id`, `status`, `metadata`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 12 + }, + "nullable": [] + }, + "hash": "206ce47841a358a42e389045e779bedb28d04862fa971c0e968d125985820056" +} diff --git a/.sqlx/query-23cd50a91dba636533568f42d48eb00ba9c37e8a0bf98abc87065956d6933911.json b/.sqlx/query-23cd50a91dba636533568f42d48eb00ba9c37e8a0bf98abc87065956d6933911.json deleted file mode 100644 index a0cb20e4..00000000 --- a/.sqlx/query-23cd50a91dba636533568f42d48eb00ba9c37e8a0bf98abc87065956d6933911.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO coupons (id, code, title, coupon_type, value, min_order, max_uses, used_count, max_uses_per_user, starts_at, expires_at, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)", - "describe": { - "columns": [], - "parameters": { - "Right": 14 - }, - "nullable": [] - }, - "hash": "23cd50a91dba636533568f42d48eb00ba9c37e8a0bf98abc87065956d6933911" -} diff --git a/.sqlx/query-2883df84746cf3aa0baaaa4e9fa38a6c8a72d52158a52558f84a33267fefb520.json b/.sqlx/query-2883df84746cf3aa0baaaa4e9fa38a6c8a72d52158a52558f84a33267fefb520.json new file mode 100644 index 00000000..2c569305 --- /dev/null +++ b/.sqlx/query-2883df84746cf3aa0baaaa4e9fa38a6c8a72d52158a52558f84a33267fefb520.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `product_variants` (`id`, `product_id`, `sku`, `title`, `price`, `original_price`, `stock`, `attributes`, `image_url`, `weight`, `sort_order`, `is_active`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 15 + }, + "nullable": [] + }, + "hash": "2883df84746cf3aa0baaaa4e9fa38a6c8a72d52158a52558f84a33267fefb520" +} diff --git a/.sqlx/query-28a6772da782aeab44de5b1ab38dcfdaf596ff1b172b29d02008f38ec680befc.json b/.sqlx/query-28a6772da782aeab44de5b1ab38dcfdaf596ff1b172b29d02008f38ec680befc.json deleted file mode 100644 index 9862ef30..00000000 --- a/.sqlx/query-28a6772da782aeab44de5b1ab38dcfdaf596ff1b172b29d02008f38ec680befc.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO audit_log (id, actor_id, actor_role, action, subject, subject_id, detail, ip_address, user_agent, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)", - "describe": { - "columns": [], - "parameters": { - "Right": 10 - }, - "nullable": [] - }, - "hash": "28a6772da782aeab44de5b1ab38dcfdaf596ff1b172b29d02008f38ec680befc" -} diff --git a/.sqlx/query-2919b493c38a046808ace3dfc0bb9f3b75ed64146de924cd5410374b6e560ffb.json b/.sqlx/query-2919b493c38a046808ace3dfc0bb9f3b75ed64146de924cd5410374b6e560ffb.json deleted file mode 100644 index 29e0ea7e..00000000 --- a/.sqlx/query-2919b493c38a046808ace3dfc0bb9f3b75ed64146de924cd5410374b6e560ffb.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO pages (id, title, slug, content, blocks, meta_title, meta_description, og_image, template, parent_id, sort_order, status, created_by, updated_by, cover_image, published_at, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19)", - "describe": { - "columns": [], - "parameters": { - "Right": 19 - }, - "nullable": [] - }, - "hash": "2919b493c38a046808ace3dfc0bb9f3b75ed64146de924cd5410374b6e560ffb" -} diff --git a/.sqlx/query-295429ee6c6e6a6a53e2942286825522d8a6d4ae3cd90d12955d9083b4532ca9.json b/.sqlx/query-295429ee6c6e6a6a53e2942286825522d8a6d4ae3cd90d12955d9083b4532ca9.json deleted file mode 100644 index 51c54b1f..00000000 --- a/.sqlx/query-295429ee6c6e6a6a53e2942286825522d8a6d4ae3cd90d12955d9083b4532ca9.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO oauth_states (id, provider, code_verifier, user_id, expires_at, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6)", - "describe": { - "columns": [], - "parameters": { - "Right": 6 - }, - "nullable": [] - }, - "hash": "295429ee6c6e6a6a53e2942286825522d8a6d4ae3cd90d12955d9083b4532ca9" -} diff --git a/.sqlx/query-29ec564f478f99e306a62409f06d01d638cce4e957266188c7828dc83b9c1c95.json b/.sqlx/query-29ec564f478f99e306a62409f06d01d638cce4e957266188c7828dc83b9c1c95.json deleted file mode 100644 index 82e9fb51..00000000 --- a/.sqlx/query-29ec564f478f99e306a62409f06d01d638cce4e957266188c7828dc83b9c1c95.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO cart_items (id, user_id, product_id, variant_id, quantity, attributes, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "29ec564f478f99e306a62409f06d01d638cce4e957266188c7828dc83b9c1c95" -} diff --git a/.sqlx/query-2a99974dd884c439c750b857f54631d370f2c20ca7e76b43f226a4dd09c130f0.json b/.sqlx/query-2a99974dd884c439c750b857f54631d370f2c20ca7e76b43f226a4dd09c130f0.json deleted file mode 100644 index 593724d3..00000000 --- a/.sqlx/query-2a99974dd884c439c750b857f54631d370f2c20ca7e76b43f226a4dd09c130f0.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO order_items (id, order_id, product_id, variant_id, title, description, sku, unit_price, quantity, subtotal, tax_amount, cover_url, attributes, created_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15)", - "describe": { - "columns": [], - "parameters": { - "Right": 15 - }, - "nullable": [] - }, - "hash": "2a99974dd884c439c750b857f54631d370f2c20ca7e76b43f226a4dd09c130f0" -} diff --git a/.sqlx/query-2ef602ad84401b9348d21b1bd132aead3e7758b38e3f38f455e235315b2a3587.json b/.sqlx/query-2ef602ad84401b9348d21b1bd132aead3e7758b38e3f38f455e235315b2a3587.json new file mode 100644 index 00000000..0d25a5ff --- /dev/null +++ b/.sqlx/query-2ef602ad84401b9348d21b1bd132aead3e7758b38e3f38f455e235315b2a3587.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `wallet_outbox` (`id`, `user_id`, `currency`, `amount`, `entry_type`, `tx_type`, `transaction_no`, `reference_type`, `reference_id`, `metadata`, `status`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 13 + }, + "nullable": [] + }, + "hash": "2ef602ad84401b9348d21b1bd132aead3e7758b38e3f38f455e235315b2a3587" +} diff --git a/.sqlx/query-30b3e633f137345161d1dcd19ba11833ecb46fef745ab93bef2ddd269711b0d0.json b/.sqlx/query-30b3e633f137345161d1dcd19ba11833ecb46fef745ab93bef2ddd269711b0d0.json new file mode 100644 index 00000000..aa226731 --- /dev/null +++ b/.sqlx/query-30b3e633f137345161d1dcd19ba11833ecb46fef745ab93bef2ddd269711b0d0.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `posts` (`id`, `title`, `slug`, `content`, `excerpt`, `cover_image`, `image_ids`, `status`, `created_by`, `updated_by`, `category_id`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `canonical_url`, `published_at`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 21 + }, + "nullable": [] + }, + "hash": "30b3e633f137345161d1dcd19ba11833ecb46fef745ab93bef2ddd269711b0d0" +} diff --git a/.sqlx/query-32d82daee7679614978ebc87fe801ccd40d62d3a581f9da0389cc6d0cf055e6e.json b/.sqlx/query-32d82daee7679614978ebc87fe801ccd40d62d3a581f9da0389cc6d0cf055e6e.json new file mode 100644 index 00000000..b17273b5 --- /dev/null +++ b/.sqlx/query-32d82daee7679614978ebc87fe801ccd40d62d3a581f9da0389cc6d0cf055e6e.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `categories` (`id`, `name`, `slug`, `description`, `parent_id`, `sort_order`, `cover_image`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `created_by`, `updated_by`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 17 + }, + "nullable": [] + }, + "hash": "32d82daee7679614978ebc87fe801ccd40d62d3a581f9da0389cc6d0cf055e6e" +} diff --git a/.sqlx/query-35cc4ceeefd6872400468763f6f70d25cf03b0adef1a1d93b2ef58a9a3a3512d.json b/.sqlx/query-35cc4ceeefd6872400468763f6f70d25cf03b0adef1a1d93b2ef58a9a3a3512d.json new file mode 100644 index 00000000..22694448 --- /dev/null +++ b/.sqlx/query-35cc4ceeefd6872400468763f6f70d25cf03b0adef1a1d93b2ef58a9a3a3512d.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `tenants` (`id`, `name`, `domain`, `config`, `status`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "35cc4ceeefd6872400468763f6f70d25cf03b0adef1a1d93b2ef58a9a3a3512d" +} diff --git a/.sqlx/query-35f2e11086a92c38a586001bde805faf78f0d4e0451dfe529c2b2378003dc0eb.json b/.sqlx/query-35f2e11086a92c38a586001bde805faf78f0d4e0451dfe529c2b2378003dc0eb.json new file mode 100644 index 00000000..eefeb5ef --- /dev/null +++ b/.sqlx/query-35f2e11086a92c38a586001bde805faf78f0d4e0451dfe529c2b2378003dc0eb.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `media` (`id`, `user_id`, `filename`, `filepath`, `mimetype`, `size`, `width`, `height`, `created_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 10 + }, + "nullable": [] + }, + "hash": "35f2e11086a92c38a586001bde805faf78f0d4e0451dfe529c2b2378003dc0eb" +} diff --git a/.sqlx/query-3af958b1cafebd4bdbe84a11a198072866c31eb22e3dd09ef9ddc17a0c94ad80.json b/.sqlx/query-3af958b1cafebd4bdbe84a11a198072866c31eb22e3dd09ef9ddc17a0c94ad80.json deleted file mode 100644 index ce23ecad..00000000 --- a/.sqlx/query-3af958b1cafebd4bdbe84a11a198072866c31eb22e3dd09ef9ddc17a0c94ad80.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO cron_execution_log (id, schedule_id, job_type, label, status, started_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6)", - "describe": { - "columns": [], - "parameters": { - "Right": 6 - }, - "nullable": [] - }, - "hash": "3af958b1cafebd4bdbe84a11a198072866c31eb22e3dd09ef9ddc17a0c94ad80" -} diff --git a/.sqlx/query-3bf4c96a5e4898c8d0019c61b83afc03c20d6bd0855487ab3d9703264b248b69.json b/.sqlx/query-3bf4c96a5e4898c8d0019c61b83afc03c20d6bd0855487ab3d9703264b248b69.json new file mode 100644 index 00000000..5749b035 --- /dev/null +++ b/.sqlx/query-3bf4c96a5e4898c8d0019c61b83afc03c20d6bd0855487ab3d9703264b248b69.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `shipping_templates` (`id`, `name`, `type`, `first_unit`, `first_price`, `additional_unit`, `additional_price`, `free_shipping_amount`, `regions`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 11 + }, + "nullable": [] + }, + "hash": "3bf4c96a5e4898c8d0019c61b83afc03c20d6bd0855487ab3d9703264b248b69" +} diff --git a/.sqlx/query-3ce6fa217db9587dcc99b63bdbddff9e0e25bbfefff115efee864f63de858f52.json b/.sqlx/query-3ce6fa217db9587dcc99b63bdbddff9e0e25bbfefff115efee864f63de858f52.json new file mode 100644 index 00000000..6b6e077f --- /dev/null +++ b/.sqlx/query-3ce6fa217db9587dcc99b63bdbddff9e0e25bbfefff115efee864f63de858f52.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `taggings` (`id`, `tag_id`, `taggable_type`, `taggable_id`, `tenant_id`) VALUES (?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 5 + }, + "nullable": [] + }, + "hash": "3ce6fa217db9587dcc99b63bdbddff9e0e25bbfefff115efee864f63de858f52" +} diff --git a/.sqlx/query-3fe0c48c7da4c7de37e24a85c8d50b8ca34e14cc61193b276981fe8b21509f3b.json b/.sqlx/query-3fe0c48c7da4c7de37e24a85c8d50b8ca34e14cc61193b276981fe8b21509f3b.json new file mode 100644 index 00000000..833c0fa0 --- /dev/null +++ b/.sqlx/query-3fe0c48c7da4c7de37e24a85c8d50b8ca34e14cc61193b276981fe8b21509f3b.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `workflow_definitions` (`id`, `name`, `description`, `steps`, `initial_step`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "3fe0c48c7da4c7de37e24a85c8d50b8ca34e14cc61193b276981fe8b21509f3b" +} diff --git a/.sqlx/query-4102ff057176472775f55126c4d91a598f454c0ff87f7d68c363682e0ba16265.json b/.sqlx/query-4102ff057176472775f55126c4d91a598f454c0ff87f7d68c363682e0ba16265.json new file mode 100644 index 00000000..7826e7c3 --- /dev/null +++ b/.sqlx/query-4102ff057176472775f55126c4d91a598f454c0ff87f7d68c363682e0ba16265.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `orders` (`id`, `user_id`, `order_no`, `subtotal`, `discount_amount`, `shipping_amount`, `total_amount`, `currency`, `buyer_name`, `buyer_phone`, `buyer_email`, `shipping_address`, `remark`, `tax_amount`, `coupon_id`, `shipping_address_id`, `billing_address_id`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 20 + }, + "nullable": [] + }, + "hash": "4102ff057176472775f55126c4d91a598f454c0ff87f7d68c363682e0ba16265" +} diff --git a/.sqlx/query-410b34079c9d2e443b87e0b5b0c7f15513e3372366172ef010cf08e498994c8b.json b/.sqlx/query-410b34079c9d2e443b87e0b5b0c7f15513e3372366172ef010cf08e498994c8b.json deleted file mode 100644 index d549b910..00000000 --- a/.sqlx/query-410b34079c9d2e443b87e0b5b0c7f15513e3372366172ef010cf08e498994c8b.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO permissions (id, role_id, action, subject, fields, conditions, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "410b34079c9d2e443b87e0b5b0c7f15513e3372366172ef010cf08e498994c8b" -} diff --git a/.sqlx/query-413fd4d171ff85e073fc19aa7d1c55daf2af68798d01c105963f27edd115682e.json b/.sqlx/query-413fd4d171ff85e073fc19aa7d1c55daf2af68798d01c105963f27edd115682e.json deleted file mode 100644 index 61442e1d..00000000 --- a/.sqlx/query-413fd4d171ff85e073fc19aa7d1c55daf2af68798d01c105963f27edd115682e.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO categories (id, name, slug, description, parent_id, sort_order, cover_image, meta_title, meta_description, og_title, og_description, og_image, created_by, updated_by, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16)", - "describe": { - "columns": [], - "parameters": { - "Right": 16 - }, - "nullable": [] - }, - "hash": "413fd4d171ff85e073fc19aa7d1c55daf2af68798d01c105963f27edd115682e" -} diff --git a/.sqlx/query-4384972ed44753b56c9f5d579a78f3dcf46330e987f50ab408b4320b1c821ccf.json b/.sqlx/query-4384972ed44753b56c9f5d579a78f3dcf46330e987f50ab408b4320b1c821ccf.json new file mode 100644 index 00000000..03177725 --- /dev/null +++ b/.sqlx/query-4384972ed44753b56c9f5d579a78f3dcf46330e987f50ab408b4320b1c821ccf.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_orders` (`id`, `user_id`, `order_id`, `title`, `amount`, `currency`, `channel_id`, `provider`, `reference_type`, `reference_id`, `return_url`, `idempotency_key`, `client_ip`, `client_language`, `client_country`, `client_user_agent`, `channel_selected_by`, `metadata`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 20 + }, + "nullable": [] + }, + "hash": "4384972ed44753b56c9f5d579a78f3dcf46330e987f50ab408b4320b1c821ccf" +} diff --git a/.sqlx/query-458aaaa26f968320740bbeb0e16683d6b0f6adde8e4703cbf7b8070e787025b4.json b/.sqlx/query-458aaaa26f968320740bbeb0e16683d6b0f6adde8e4703cbf7b8070e787025b4.json new file mode 100644 index 00000000..a4ec3a44 --- /dev/null +++ b/.sqlx/query-458aaaa26f968320740bbeb0e16683d6b0f6adde8e4703cbf7b8070e787025b4.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `product_categories` (`id`, `name`, `slug`, `description`, `cover_image`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `parent_id`, `sort_order`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 16 + }, + "nullable": [] + }, + "hash": "458aaaa26f968320740bbeb0e16683d6b0f6adde8e4703cbf7b8070e787025b4" +} diff --git a/.sqlx/query-461fa4776033923298171da2de4ee2871658c9eb488efa84784e2fcc6f00441e.json b/.sqlx/query-461fa4776033923298171da2de4ee2871658c9eb488efa84784e2fcc6f00441e.json deleted file mode 100644 index cb3a618a..00000000 --- a/.sqlx/query-461fa4776033923298171da2de4ee2871658c9eb488efa84784e2fcc6f00441e.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO users (id, tenant_id, username, created_at, updated_at, role, status, registered_via) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "461fa4776033923298171da2de4ee2871658c9eb488efa84784e2fcc6f00441e" -} diff --git a/.sqlx/query-4a3efe17ed3e0fa24aaa21c06471dd240ff7cfcbc2f44cdba6ece1675b5064ed.json b/.sqlx/query-4a3efe17ed3e0fa24aaa21c06471dd240ff7cfcbc2f44cdba6ece1675b5064ed.json deleted file mode 100644 index 97fb5118..00000000 --- a/.sqlx/query-4a3efe17ed3e0fa24aaa21c06471dd240ff7cfcbc2f44cdba6ece1675b5064ed.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO product_categories (id, name, slug, description, cover_image, meta_title, meta_description, og_title, og_description, og_image, parent_id, sort_order, created_by, updated_by, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17)", - "describe": { - "columns": [], - "parameters": { - "Right": 17 - }, - "nullable": [] - }, - "hash": "4a3efe17ed3e0fa24aaa21c06471dd240ff7cfcbc2f44cdba6ece1675b5064ed" -} diff --git a/.sqlx/query-4abe269febbc73d0757a6c494fc3960e6f98ad4e0b32b297959f10a51ef7b627.json b/.sqlx/query-4abe269febbc73d0757a6c494fc3960e6f98ad4e0b32b297959f10a51ef7b627.json new file mode 100644 index 00000000..c6ea7b0a --- /dev/null +++ b/.sqlx/query-4abe269febbc73d0757a6c494fc3960e6f98ad4e0b32b297959f10a51ef7b627.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_refunds` (`id`, `payment_order_id`, `order_id`, `user_id`, `amount`, `currency`, `reason`, `provider_refund_id`, `status`, `metadata`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 13 + }, + "nullable": [] + }, + "hash": "4abe269febbc73d0757a6c494fc3960e6f98ad4e0b32b297959f10a51ef7b627" +} diff --git a/.sqlx/query-4b747395c48682c15da802e576e637dfa6d697206896e963abd2281ba910619a.json b/.sqlx/query-4b747395c48682c15da802e576e637dfa6d697206896e963abd2281ba910619a.json deleted file mode 100644 index ba75dfd5..00000000 --- a/.sqlx/query-4b747395c48682c15da802e576e637dfa6d697206896e963abd2281ba910619a.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_transactions (id, payment_order_id, order_id, user_id, tx_type, amount, currency, provider_tx_id, status, raw_payload, created_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", - "describe": { - "columns": [], - "parameters": { - "Right": 12 - }, - "nullable": [] - }, - "hash": "4b747395c48682c15da802e576e637dfa6d697206896e963abd2281ba910619a" -} diff --git a/.sqlx/query-4be72c342832bc472a2b9f4fb3e17e1fe2bcb22ec317f62869f3e037c7167dbb.json b/.sqlx/query-4be72c342832bc472a2b9f4fb3e17e1fe2bcb22ec317f62869f3e037c7167dbb.json new file mode 100644 index 00000000..f178741c --- /dev/null +++ b/.sqlx/query-4be72c342832bc472a2b9f4fb3e17e1fe2bcb22ec317f62869f3e037c7167dbb.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `roles` (`id`, `name`, `description`, `is_system`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 6 + }, + "nullable": [] + }, + "hash": "4be72c342832bc472a2b9f4fb3e17e1fe2bcb22ec317f62869f3e037c7167dbb" +} diff --git a/.sqlx/query-4bf6caaf1078e497274de0cc1fc417f1e2505057b7ed3e56f3921191befa2205.json b/.sqlx/query-4bf6caaf1078e497274de0cc1fc417f1e2505057b7ed3e56f3921191befa2205.json deleted file mode 100644 index d7793754..00000000 --- a/.sqlx/query-4bf6caaf1078e497274de0cc1fc417f1e2505057b7ed3e56f3921191befa2205.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO product_variants (id, product_id, sku, title, price, original_price, stock, attributes, image_url, weight, sort_order, is_active, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15)", - "describe": { - "columns": [], - "parameters": { - "Right": 15 - }, - "nullable": [] - }, - "hash": "4bf6caaf1078e497274de0cc1fc417f1e2505057b7ed3e56f3921191befa2205" -} diff --git a/.sqlx/query-4d173dc00623dbb15d982fa725d1082a3459e408b4d3e9d7c1f4dd6408897010.json b/.sqlx/query-4d173dc00623dbb15d982fa725d1082a3459e408b4d3e9d7c1f4dd6408897010.json deleted file mode 100644 index 6a69a470..00000000 --- a/.sqlx/query-4d173dc00623dbb15d982fa725d1082a3459e408b4d3e9d7c1f4dd6408897010.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO media (id, user_id, filename, filepath, mimetype, size, width, height, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)", - "describe": { - "columns": [], - "parameters": { - "Right": 9 - }, - "nullable": [] - }, - "hash": "4d173dc00623dbb15d982fa725d1082a3459e408b4d3e9d7c1f4dd6408897010" -} diff --git a/.sqlx/query-4f978835222f93d17ba4e5e3102cf0d9804cbc1a24d0549e32f58f6c7189758b.json b/.sqlx/query-4f978835222f93d17ba4e5e3102cf0d9804cbc1a24d0549e32f58f6c7189758b.json deleted file mode 100644 index d9cc1c57..00000000 --- a/.sqlx/query-4f978835222f93d17ba4e5e3102cf0d9804cbc1a24d0549e32f58f6c7189758b.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO cron_schedules (id, label, job_type, payload, cron_expr, enabled, next_run_at, plugin_id, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)", - "describe": { - "columns": [], - "parameters": { - "Right": 10 - }, - "nullable": [] - }, - "hash": "4f978835222f93d17ba4e5e3102cf0d9804cbc1a24d0549e32f58f6c7189758b" -} diff --git a/.sqlx/query-5758dc7c2634b3a00cf929c79df1a24e6834a0da52952a5b2f21221681886d7d.json b/.sqlx/query-5758dc7c2634b3a00cf929c79df1a24e6834a0da52952a5b2f21221681886d7d.json deleted file mode 100644 index c7d5a636..00000000 --- a/.sqlx/query-5758dc7c2634b3a00cf929c79df1a24e6834a0da52952a5b2f21221681886d7d.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO webhook_subscriptions (id, url, secret, events, enabled, description, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)", - "describe": { - "columns": [], - "parameters": { - "Right": 9 - }, - "nullable": [] - }, - "hash": "5758dc7c2634b3a00cf929c79df1a24e6834a0da52952a5b2f21221681886d7d" -} diff --git a/.sqlx/query-57c76d4195d5a4778ffdd1374bd9160013287aa0cbbab8c5204b5dbe3e54a3c3.json b/.sqlx/query-57c76d4195d5a4778ffdd1374bd9160013287aa0cbbab8c5204b5dbe3e54a3c3.json deleted file mode 100644 index 4260b4c5..00000000 --- a/.sqlx/query-57c76d4195d5a4778ffdd1374bd9160013287aa0cbbab8c5204b5dbe3e54a3c3.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO oauth_accounts (id, user_id, provider, provider_user_id, email, display_name, avatar_url, access_token, refresh_token, token_expires_at, profile, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)", - "describe": { - "columns": [], - "parameters": { - "Right": 13 - }, - "nullable": [] - }, - "hash": "57c76d4195d5a4778ffdd1374bd9160013287aa0cbbab8c5204b5dbe3e54a3c3" -} diff --git a/.sqlx/query-586414e6a79736b8bec1ce93ce5841474e02a2c92cc2391623ec13a3a55c22d2.json b/.sqlx/query-586414e6a79736b8bec1ce93ce5841474e02a2c92cc2391623ec13a3a55c22d2.json new file mode 100644 index 00000000..b221c24c --- /dev/null +++ b/.sqlx/query-586414e6a79736b8bec1ce93ce5841474e02a2c92cc2391623ec13a3a55c22d2.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `order_items` (`id`, `order_id`, `product_id`, `variant_id`, `title`, `description`, `sku`, `unit_price`, `quantity`, `subtotal`, `tax_amount`, `cover_url`, `attributes`, `created_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 15 + }, + "nullable": [] + }, + "hash": "586414e6a79736b8bec1ce93ce5841474e02a2c92cc2391623ec13a3a55c22d2" +} diff --git a/.sqlx/query-5b585db1363cc1abea34aa95ffb209031b74c7233cbba37bbd6792ecca9150e2.json b/.sqlx/query-5b585db1363cc1abea34aa95ffb209031b74c7233cbba37bbd6792ecca9150e2.json deleted file mode 100644 index a755754d..00000000 --- a/.sqlx/query-5b585db1363cc1abea34aa95ffb209031b74c7233cbba37bbd6792ecca9150e2.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO workflow_definitions (id, name, description, steps, initial_step, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "5b585db1363cc1abea34aa95ffb209031b74c7233cbba37bbd6792ecca9150e2" -} diff --git a/.sqlx/query-5cdfe7c1f74f11ce11c5ff7564adf74dbd2f165090191fe767638988f50d04f7.json b/.sqlx/query-5cdfe7c1f74f11ce11c5ff7564adf74dbd2f165090191fe767638988f50d04f7.json new file mode 100644 index 00000000..bd593392 --- /dev/null +++ b/.sqlx/query-5cdfe7c1f74f11ce11c5ff7564adf74dbd2f165090191fe767638988f50d04f7.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `cart_items` (`id`, `user_id`, `product_id`, `variant_id`, `quantity`, `attributes`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "5cdfe7c1f74f11ce11c5ff7564adf74dbd2f165090191fe767638988f50d04f7" +} diff --git a/.sqlx/query-5ce3f0fefb05bf54aeca419eda8c0d35586cd07a24fd6232df173e3ffc2b69f7.json b/.sqlx/query-5ce3f0fefb05bf54aeca419eda8c0d35586cd07a24fd6232df173e3ffc2b69f7.json deleted file mode 100644 index fc255b1a..00000000 --- a/.sqlx/query-5ce3f0fefb05bf54aeca419eda8c0d35586cd07a24fd6232df173e3ffc2b69f7.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_transactions (id, payment_order_id, order_id, user_id, tx_type, amount, currency, provider_tx_id, status, raw_payload, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", - "describe": { - "columns": [], - "parameters": { - "Right": 11 - }, - "nullable": [] - }, - "hash": "5ce3f0fefb05bf54aeca419eda8c0d35586cd07a24fd6232df173e3ffc2b69f7" -} diff --git a/.sqlx/query-5e9605bd63329bb489428f0a91cb86cf05f8c670c4760ce727add4a53a77a75d.json b/.sqlx/query-5e9605bd63329bb489428f0a91cb86cf05f8c670c4760ce727add4a53a77a75d.json deleted file mode 100644 index 89ca33ec..00000000 --- a/.sqlx/query-5e9605bd63329bb489428f0a91cb86cf05f8c670c4760ce727add4a53a77a75d.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO taggings (id, tag_id, taggable_type, taggable_id, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5)", - "describe": { - "columns": [], - "parameters": { - "Right": 5 - }, - "nullable": [] - }, - "hash": "5e9605bd63329bb489428f0a91cb86cf05f8c670c4760ce727add4a53a77a75d" -} diff --git a/.sqlx/query-5f4046cf0e927266774b07f135687e848a82ef3eda14b09611af597fbfcd8119.json b/.sqlx/query-5f4046cf0e927266774b07f135687e848a82ef3eda14b09611af597fbfcd8119.json new file mode 100644 index 00000000..39a7967a --- /dev/null +++ b/.sqlx/query-5f4046cf0e927266774b07f135687e848a82ef3eda14b09611af597fbfcd8119.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `users` (`id`, `username`, `created_at`, `updated_at`, `role`, `status`, `registered_via`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "5f4046cf0e927266774b07f135687e848a82ef3eda14b09611af597fbfcd8119" +} diff --git a/.sqlx/query-60dc717206e2519ccacbbb8c4e9f273da0d49943754ebf8e715988cea21fe3ae.json b/.sqlx/query-60dc717206e2519ccacbbb8c4e9f273da0d49943754ebf8e715988cea21fe3ae.json deleted file mode 100644 index b6e1683d..00000000 --- a/.sqlx/query-60dc717206e2519ccacbbb8c4e9f273da0d49943754ebf8e715988cea21fe3ae.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO user_addresses (id, user_id, label, recipient_name, phone, country, province, city, district, address_line1, address_line2, postal_code, is_default, address_type, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16)", - "describe": { - "columns": [], - "parameters": { - "Right": 16 - }, - "nullable": [] - }, - "hash": "60dc717206e2519ccacbbb8c4e9f273da0d49943754ebf8e715988cea21fe3ae" -} diff --git a/.sqlx/query-613e7465f9259a6b45088b37712c02527017a18c8b8dc89b73f0a99a1e481357.json b/.sqlx/query-613e7465f9259a6b45088b37712c02527017a18c8b8dc89b73f0a99a1e481357.json new file mode 100644 index 00000000..c5c21463 --- /dev/null +++ b/.sqlx/query-613e7465f9259a6b45088b37712c02527017a18c8b8dc89b73f0a99a1e481357.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `user_addresses` (`id`, `user_id`, `label`, `recipient_name`, `phone`, `country`, `province`, `city`, `district`, `address_line1`, `address_line2`, `postal_code`, `is_default`, `address_type`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 16 + }, + "nullable": [] + }, + "hash": "613e7465f9259a6b45088b37712c02527017a18c8b8dc89b73f0a99a1e481357" +} diff --git a/.sqlx/query-619bbdf9be92fbc7252df50e6900b32a67eedf844d63c3192a1134bcc84d780b.json b/.sqlx/query-619bbdf9be92fbc7252df50e6900b32a67eedf844d63c3192a1134bcc84d780b.json deleted file mode 100644 index dd244c3e..00000000 --- a/.sqlx/query-619bbdf9be92fbc7252df50e6900b32a67eedf844d63c3192a1134bcc84d780b.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO comments (id, post_id, created_by, updated_by, nickname, email, content, parent_id, created_at, updated_at, status) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", - "describe": { - "columns": [], - "parameters": { - "Right": 11 - }, - "nullable": [] - }, - "hash": "619bbdf9be92fbc7252df50e6900b32a67eedf844d63c3192a1134bcc84d780b" -} diff --git a/.sqlx/query-644c3bd122fd893b4f21221b6323578010e49272cfbb012aa35dcaf62e4f4988.json b/.sqlx/query-644c3bd122fd893b4f21221b6323578010e49272cfbb012aa35dcaf62e4f4988.json deleted file mode 100644 index c5add0d6..00000000 --- a/.sqlx/query-644c3bd122fd893b4f21221b6323578010e49272cfbb012aa35dcaf62e4f4988.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO product_comments (id, product_id, order_id, user_id, rating, title, content, images, status, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", - "describe": { - "columns": [], - "parameters": { - "Right": 12 - }, - "nullable": [] - }, - "hash": "644c3bd122fd893b4f21221b6323578010e49272cfbb012aa35dcaf62e4f4988" -} diff --git a/.sqlx/query-684642237c10edcb617a4a7af9fc654c9cf6a84870f035994aacdca12add153d.json b/.sqlx/query-684642237c10edcb617a4a7af9fc654c9cf6a84870f035994aacdca12add153d.json new file mode 100644 index 00000000..44a0f61e --- /dev/null +++ b/.sqlx/query-684642237c10edcb617a4a7af9fc654c9cf6a84870f035994aacdca12add153d.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `plugin_storage` (`plugin_id`, `storage_key`, `value`, `expires_at`, `updated_at`) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `expires_at` = VALUES(`expires_at`), `updated_at` = VALUES(`updated_at`)", + "describe": { + "columns": [], + "parameters": { + "Right": 5 + }, + "nullable": [] + }, + "hash": "684642237c10edcb617a4a7af9fc654c9cf6a84870f035994aacdca12add153d" +} diff --git a/.sqlx/query-689a6f70c4cb8dd1c6cf5d0c2daac32b86b78b07c63035550c1f4d409274c83f.json b/.sqlx/query-689a6f70c4cb8dd1c6cf5d0c2daac32b86b78b07c63035550c1f4d409274c83f.json new file mode 100644 index 00000000..6c3c1eb5 --- /dev/null +++ b/.sqlx/query-689a6f70c4cb8dd1c6cf5d0c2daac32b86b78b07c63035550c1f4d409274c83f.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `orders` (`id`, `user_id`, `order_no`, `subtotal`, `discount_amount`, `shipping_amount`, `total_amount`, `currency`, `buyer_name`, `buyer_phone`, `buyer_email`, `shipping_address`, `remark`, `tax_amount`, `coupon_id`, `shipping_address_id`, `billing_address_id`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 19 + }, + "nullable": [] + }, + "hash": "689a6f70c4cb8dd1c6cf5d0c2daac32b86b78b07c63035550c1f4d409274c83f" +} diff --git a/.sqlx/query-6b15cd2e3955588956ba22aa093cb605e246efe53cc29338388d8728fa432e57.json b/.sqlx/query-6b15cd2e3955588956ba22aa093cb605e246efe53cc29338388d8728fa432e57.json deleted file mode 100644 index 13697db8..00000000 --- a/.sqlx/query-6b15cd2e3955588956ba22aa093cb605e246efe53cc29338388d8728fa432e57.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_refunds (id, payment_order_id, order_id, user_id, amount, currency, reason, provider_refund_id, status, metadata, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)", - "describe": { - "columns": [], - "parameters": { - "Right": 13 - }, - "nullable": [] - }, - "hash": "6b15cd2e3955588956ba22aa093cb605e246efe53cc29338388d8728fa432e57" -} diff --git a/.sqlx/query-6b8c5c6ee229c4fd918f9f4d4438e97d501e2105a7e386425f3d2d3240e29511.json b/.sqlx/query-6b8c5c6ee229c4fd918f9f4d4438e97d501e2105a7e386425f3d2d3240e29511.json deleted file mode 100644 index 83c5aafa..00000000 --- a/.sqlx/query-6b8c5c6ee229c4fd918f9f4d4438e97d501e2105a7e386425f3d2d3240e29511.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO jobs (id, job_type, payload, status, max_attempts, run_after, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "6b8c5c6ee229c4fd918f9f4d4438e97d501e2105a7e386425f3d2d3240e29511" -} diff --git a/.sqlx/query-6c992194adc80ae22a9df8f76b52e202958f9a73a4abef3e9f9a2e803623ab29.json b/.sqlx/query-6c992194adc80ae22a9df8f76b52e202958f9a73a4abef3e9f9a2e803623ab29.json new file mode 100644 index 00000000..66b8cb38 --- /dev/null +++ b/.sqlx/query-6c992194adc80ae22a9df8f76b52e202958f9a73a4abef3e9f9a2e803623ab29.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `permissions` (`id`, `role_id`, `action`, `subject`, `fields`, `conditions`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "6c992194adc80ae22a9df8f76b52e202958f9a73a4abef3e9f9a2e803623ab29" +} diff --git a/.sqlx/query-6e29ef7bd2852175269936b10162aa44319f859cf6b96e23faadfaedde151206.json b/.sqlx/query-6e29ef7bd2852175269936b10162aa44319f859cf6b96e23faadfaedde151206.json new file mode 100644 index 00000000..9d6e1720 --- /dev/null +++ b/.sqlx/query-6e29ef7bd2852175269936b10162aa44319f859cf6b96e23faadfaedde151206.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `refresh_tokens` (`id`, `user_id`, `token`, `expires_at`, `created_at`) VALUES (?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 5 + }, + "nullable": [] + }, + "hash": "6e29ef7bd2852175269936b10162aa44319f859cf6b96e23faadfaedde151206" +} diff --git a/.sqlx/query-7015463e67a587c677bf5f192ba2aa2b75302feb99d520fdef4bb3a709d28379.json b/.sqlx/query-7015463e67a587c677bf5f192ba2aa2b75302feb99d520fdef4bb3a709d28379.json deleted file mode 100644 index 90b380d7..00000000 --- a/.sqlx/query-7015463e67a587c677bf5f192ba2aa2b75302feb99d520fdef4bb3a709d28379.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO tags (id, name, slug, created_by, updated_by, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "7015463e67a587c677bf5f192ba2aa2b75302feb99d520fdef4bb3a709d28379" -} diff --git a/.sqlx/query-7051eadf2365278e99621914872204ec02d5abccf54481ef54e68eccf7ae11f9.json b/.sqlx/query-7051eadf2365278e99621914872204ec02d5abccf54481ef54e68eccf7ae11f9.json deleted file mode 100644 index 1a5cf358..00000000 --- a/.sqlx/query-7051eadf2365278e99621914872204ec02d5abccf54481ef54e68eccf7ae11f9.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO reusable_blocks (id, name, block_type, content, description, created_by, updated_by, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)", - "describe": { - "columns": [], - "parameters": { - "Right": 10 - }, - "nullable": [] - }, - "hash": "7051eadf2365278e99621914872204ec02d5abccf54481ef54e68eccf7ae11f9" -} diff --git a/.sqlx/query-70e572793c84d42e1a734edd7244decda367afdf727f26c41467d8ede3b0a4c8.json b/.sqlx/query-70e572793c84d42e1a734edd7244decda367afdf727f26c41467d8ede3b0a4c8.json deleted file mode 100644 index d18e5a87..00000000 --- a/.sqlx/query-70e572793c84d42e1a734edd7244decda367afdf727f26c41467d8ede3b0a4c8.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO coupons (id, code, title, coupon_type, value, min_order, max_uses, used_count, max_uses_per_user, starts_at, expires_at, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)", - "describe": { - "columns": [], - "parameters": { - "Right": 13 - }, - "nullable": [] - }, - "hash": "70e572793c84d42e1a734edd7244decda367afdf727f26c41467d8ede3b0a4c8" -} diff --git a/.sqlx/query-76dfec232fba0205292eb44f9cfbce3ef7990746beae4dfba722537a1b4dcae2.json b/.sqlx/query-76dfec232fba0205292eb44f9cfbce3ef7990746beae4dfba722537a1b4dcae2.json new file mode 100644 index 00000000..cae5fe6e --- /dev/null +++ b/.sqlx/query-76dfec232fba0205292eb44f9cfbce3ef7990746beae4dfba722537a1b4dcae2.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `media` (`id`, `user_id`, `filename`, `filepath`, `mimetype`, `size`, `width`, `height`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 9 + }, + "nullable": [] + }, + "hash": "76dfec232fba0205292eb44f9cfbce3ef7990746beae4dfba722537a1b4dcae2" +} diff --git a/.sqlx/query-78b4b7396b4c1c1d9fad170c2a0dc9ef2b6beb40bee741f0a113d0e2bb2045fa.json b/.sqlx/query-78b4b7396b4c1c1d9fad170c2a0dc9ef2b6beb40bee741f0a113d0e2bb2045fa.json new file mode 100644 index 00000000..dbef1f41 --- /dev/null +++ b/.sqlx/query-78b4b7396b4c1c1d9fad170c2a0dc9ef2b6beb40bee741f0a113d0e2bb2045fa.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `tags` (`id`, `name`, `slug`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "78b4b7396b4c1c1d9fad170c2a0dc9ef2b6beb40bee741f0a113d0e2bb2045fa" +} diff --git a/.sqlx/query-7e106ee0128fc4597f89a594f3f72b504edf1ea8c4d20a60117b4c0a37e4ba33.json b/.sqlx/query-7e106ee0128fc4597f89a594f3f72b504edf1ea8c4d20a60117b4c0a37e4ba33.json deleted file mode 100644 index 796efd37..00000000 --- a/.sqlx/query-7e106ee0128fc4597f89a594f3f72b504edf1ea8c4d20a60117b4c0a37e4ba33.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO wallets (id, user_id, currency, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5)", - "describe": { - "columns": [], - "parameters": { - "Right": 5 - }, - "nullable": [] - }, - "hash": "7e106ee0128fc4597f89a594f3f72b504edf1ea8c4d20a60117b4c0a37e4ba33" -} diff --git a/.sqlx/query-7fb134809986dbcbf2a0a961565e1c6e266f2e8d6d8703d3489bd63e7a38339e.json b/.sqlx/query-7fb134809986dbcbf2a0a961565e1c6e266f2e8d6d8703d3489bd63e7a38339e.json new file mode 100644 index 00000000..e420bf0d --- /dev/null +++ b/.sqlx/query-7fb134809986dbcbf2a0a961565e1c6e266f2e8d6d8703d3489bd63e7a38339e.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `product_categories` (`id`, `name`, `slug`, `description`, `cover_image`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `parent_id`, `sort_order`, `created_by`, `updated_by`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 17 + }, + "nullable": [] + }, + "hash": "7fb134809986dbcbf2a0a961565e1c6e266f2e8d6d8703d3489bd63e7a38339e" +} diff --git a/.sqlx/query-81363143b3f061edbb43de27b35e4ea5fef8ab09ca089855c2e0ad15f96cfd2c.json b/.sqlx/query-81363143b3f061edbb43de27b35e4ea5fef8ab09ca089855c2e0ad15f96cfd2c.json new file mode 100644 index 00000000..45c3b55b --- /dev/null +++ b/.sqlx/query-81363143b3f061edbb43de27b35e4ea5fef8ab09ca089855c2e0ad15f96cfd2c.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `workflow_step_logs` (`id`, `instance_id`, `step_id`, `step_name`, `status`, `input`, `started_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "81363143b3f061edbb43de27b35e4ea5fef8ab09ca089855c2e0ad15f96cfd2c" +} diff --git a/.sqlx/query-81600d5b790d61b7473d7dfa56f387bbc4b4dcd7ddcc42548574e2b59f259cc2.json b/.sqlx/query-81600d5b790d61b7473d7dfa56f387bbc4b4dcd7ddcc42548574e2b59f259cc2.json new file mode 100644 index 00000000..fd1ce186 --- /dev/null +++ b/.sqlx/query-81600d5b790d61b7473d7dfa56f387bbc4b4dcd7ddcc42548574e2b59f259cc2.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `webhook_subscriptions` (`id`, `url`, `secret`, `events`, `enabled`, `description`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "81600d5b790d61b7473d7dfa56f387bbc4b4dcd7ddcc42548574e2b59f259cc2" +} diff --git a/.sqlx/query-816d3e64cf350633d70c14241f20487a9210946793a8a41d6e2e7b8536c59559.json b/.sqlx/query-816d3e64cf350633d70c14241f20487a9210946793a8a41d6e2e7b8536c59559.json deleted file mode 100644 index c3f925b7..00000000 --- a/.sqlx/query-816d3e64cf350633d70c14241f20487a9210946793a8a41d6e2e7b8536c59559.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_orders (id, user_id, order_id, title, amount, currency, channel_id, provider, reference_type, reference_id, return_url, idempotency_key, client_ip, client_language, client_country, client_user_agent, channel_selected_by, metadata, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20)", - "describe": { - "columns": [], - "parameters": { - "Right": 20 - }, - "nullable": [] - }, - "hash": "816d3e64cf350633d70c14241f20487a9210946793a8a41d6e2e7b8536c59559" -} diff --git a/.sqlx/query-82e94df5f0f7cee8b48a9e6d6101dcf109ec97a5e3dcdb330ee1ae90e021839f.json b/.sqlx/query-82e94df5f0f7cee8b48a9e6d6101dcf109ec97a5e3dcdb330ee1ae90e021839f.json new file mode 100644 index 00000000..dc09eefc --- /dev/null +++ b/.sqlx/query-82e94df5f0f7cee8b48a9e6d6101dcf109ec97a5e3dcdb330ee1ae90e021839f.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `categories` (`id`, `name`, `slug`, `description`, `parent_id`, `sort_order`, `cover_image`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 16 + }, + "nullable": [] + }, + "hash": "82e94df5f0f7cee8b48a9e6d6101dcf109ec97a5e3dcdb330ee1ae90e021839f" +} diff --git a/.sqlx/query-840e5fbc7c16b6c851f4a84dad5dfdf95115ab50fb24a2aeb3870956a1497960.json b/.sqlx/query-840e5fbc7c16b6c851f4a84dad5dfdf95115ab50fb24a2aeb3870956a1497960.json new file mode 100644 index 00000000..5e6e3bc0 --- /dev/null +++ b/.sqlx/query-840e5fbc7c16b6c851f4a84dad5dfdf95115ab50fb24a2aeb3870956a1497960.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `pages` (`id`, `title`, `slug`, `content`, `blocks`, `meta_title`, `meta_description`, `og_image`, `template`, `parent_id`, `sort_order`, `status`, `created_by`, `updated_by`, `cover_image`, `published_at`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 19 + }, + "nullable": [] + }, + "hash": "840e5fbc7c16b6c851f4a84dad5dfdf95115ab50fb24a2aeb3870956a1497960" +} diff --git a/.sqlx/query-8536e75e37b9c140002f224528129a3d85dc52936951dd65734949c07b94253f.json b/.sqlx/query-8536e75e37b9c140002f224528129a3d85dc52936951dd65734949c07b94253f.json new file mode 100644 index 00000000..4808e66b --- /dev/null +++ b/.sqlx/query-8536e75e37b9c140002f224528129a3d85dc52936951dd65734949c07b94253f.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `posts` (`id`, `title`, `slug`, `content`, `excerpt`, `cover_image`, `image_ids`, `status`, `created_by`, `updated_by`, `category_id`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `canonical_url`, `published_at`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 20 + }, + "nullable": [] + }, + "hash": "8536e75e37b9c140002f224528129a3d85dc52936951dd65734949c07b94253f" +} diff --git a/.sqlx/query-856e567f6cccd8efc97cb10f18d5fc4ba1a151646c05e6b8275ed47caa129fc8.json b/.sqlx/query-856e567f6cccd8efc97cb10f18d5fc4ba1a151646c05e6b8275ed47caa129fc8.json deleted file mode 100644 index 777901b3..00000000 --- a/.sqlx/query-856e567f6cccd8efc97cb10f18d5fc4ba1a151646c05e6b8275ed47caa129fc8.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO product_variants (id, product_id, sku, title, price, original_price, stock, attributes, image_url, weight, sort_order, is_active, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)", - "describe": { - "columns": [], - "parameters": { - "Right": 14 - }, - "nullable": [] - }, - "hash": "856e567f6cccd8efc97cb10f18d5fc4ba1a151646c05e6b8275ed47caa129fc8" -} diff --git a/.sqlx/query-85ddf6296df989403dd05ce8fce41dc77b26b68ca0ab101df4cf3a7ab21fe502.json b/.sqlx/query-85ddf6296df989403dd05ce8fce41dc77b26b68ca0ab101df4cf3a7ab21fe502.json deleted file mode 100644 index 579e5935..00000000 --- a/.sqlx/query-85ddf6296df989403dd05ce8fce41dc77b26b68ca0ab101df4cf3a7ab21fe502.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_channels (id, provider, name, is_live, credentials, webhook_secret, settings, is_active, sort_order, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", - "describe": { - "columns": [], - "parameters": { - "Right": 11 - }, - "nullable": [] - }, - "hash": "85ddf6296df989403dd05ce8fce41dc77b26b68ca0ab101df4cf3a7ab21fe502" -} diff --git a/.sqlx/query-895eb07c1002a17a3dbdaa51ced9c6446dbddb46dc50e93c3eca1b72be6ecdcd.json b/.sqlx/query-895eb07c1002a17a3dbdaa51ced9c6446dbddb46dc50e93c3eca1b72be6ecdcd.json new file mode 100644 index 00000000..395ada61 --- /dev/null +++ b/.sqlx/query-895eb07c1002a17a3dbdaa51ced9c6446dbddb46dc50e93c3eca1b72be6ecdcd.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `products` (`id`, `category_id`, `title`, `description`, `cover_url`, `product_type`, `fulfillment_type`, `delivery_hook`, `weight`, `price`, `currency`, `attributes`, `sort_order`, `slug`, `content`, `image_ids`, `original_price`, `specs`, `unit`, `min_purchase`, `max_purchase`, `virtual_sales`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `stock`, `cost_price`, `sale_price`, `has_variants`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 33 + }, + "nullable": [] + }, + "hash": "895eb07c1002a17a3dbdaa51ced9c6446dbddb46dc50e93c3eca1b72be6ecdcd" +} diff --git a/.sqlx/query-8a3d02278ef22120d26957fe604cd0cb95058b1baab16f8f457a52a7c5be02a6.json b/.sqlx/query-8a3d02278ef22120d26957fe604cd0cb95058b1baab16f8f457a52a7c5be02a6.json deleted file mode 100644 index 4bbbb166..00000000 --- a/.sqlx/query-8a3d02278ef22120d26957fe604cd0cb95058b1baab16f8f457a52a7c5be02a6.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO categories (id, name, slug, description, parent_id, sort_order, cover_image, meta_title, meta_description, og_title, og_description, og_image, created_by, updated_by, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17)", - "describe": { - "columns": [], - "parameters": { - "Right": 17 - }, - "nullable": [] - }, - "hash": "8a3d02278ef22120d26957fe604cd0cb95058b1baab16f8f457a52a7c5be02a6" -} diff --git a/.sqlx/query-8b4690ba53bdc8815dec7ce06c77505b8fd06507bdc16a31aaabdc21cbc33c5c.json b/.sqlx/query-8b4690ba53bdc8815dec7ce06c77505b8fd06507bdc16a31aaabdc21cbc33c5c.json deleted file mode 100644 index c0997e88..00000000 --- a/.sqlx/query-8b4690ba53bdc8815dec7ce06c77505b8fd06507bdc16a31aaabdc21cbc33c5c.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO refresh_tokens (id, user_id, token, expires_at, created_at) VALUES (?1, ?2, ?3, ?4, ?5)", - "describe": { - "columns": [], - "parameters": { - "Right": 5 - }, - "nullable": [] - }, - "hash": "8b4690ba53bdc8815dec7ce06c77505b8fd06507bdc16a31aaabdc21cbc33c5c" -} diff --git a/.sqlx/query-8cabd066e4170413b7d0291f14ba1f43ea4cfd76d1b96f5ce7684efde79e9312.json b/.sqlx/query-8cabd066e4170413b7d0291f14ba1f43ea4cfd76d1b96f5ce7684efde79e9312.json new file mode 100644 index 00000000..198757c7 --- /dev/null +++ b/.sqlx/query-8cabd066e4170413b7d0291f14ba1f43ea4cfd76d1b96f5ce7684efde79e9312.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `currencies` (`id`, `tenant_id`, `code`, `name`, `decimals`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "8cabd066e4170413b7d0291f14ba1f43ea4cfd76d1b96f5ce7684efde79e9312" +} diff --git a/.sqlx/query-8d3810386941bcc9d19160db06d27ed9e199a44d5c6261f924efc092973eaac0.json b/.sqlx/query-8d3810386941bcc9d19160db06d27ed9e199a44d5c6261f924efc092973eaac0.json deleted file mode 100644 index 1c71c2db..00000000 --- a/.sqlx/query-8d3810386941bcc9d19160db06d27ed9e199a44d5c6261f924efc092973eaac0.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO workflow_step_logs (id, instance_id, step_id, step_name, status, input, started_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "8d3810386941bcc9d19160db06d27ed9e199a44d5c6261f924efc092973eaac0" -} diff --git a/.sqlx/query-8f84d596eb12222a16f3137fb2f5e22d8585d2550bb5ea22761294cc57432d9f.json b/.sqlx/query-8f84d596eb12222a16f3137fb2f5e22d8585d2550bb5ea22761294cc57432d9f.json deleted file mode 100644 index 16c0b267..00000000 --- a/.sqlx/query-8f84d596eb12222a16f3137fb2f5e22d8585d2550bb5ea22761294cc57432d9f.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO media (id, user_id, filename, filepath, mimetype, size, width, height, created_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)", - "describe": { - "columns": [], - "parameters": { - "Right": 10 - }, - "nullable": [] - }, - "hash": "8f84d596eb12222a16f3137fb2f5e22d8585d2550bb5ea22761294cc57432d9f" -} diff --git a/.sqlx/query-93c11f744897ea7403054bafc7f44002859e31d6d0899a644a3cd9c62c8dab67.json b/.sqlx/query-93c11f744897ea7403054bafc7f44002859e31d6d0899a644a3cd9c62c8dab67.json deleted file mode 100644 index 07bf8649..00000000 --- a/.sqlx/query-93c11f744897ea7403054bafc7f44002859e31d6d0899a644a3cd9c62c8dab67.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO wallet_transactions (id, wallet_id, user_id, entry_type, amount, balance_after, tx_type, currency, transaction_no, related_tx_id, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", - "describe": { - "columns": [], - "parameters": { - "Right": 11 - }, - "nullable": [] - }, - "hash": "93c11f744897ea7403054bafc7f44002859e31d6d0899a644a3cd9c62c8dab67" -} diff --git a/.sqlx/query-943f1db531b69c702501283fdaaed62fb054e9add442bc1a0ccd851d493c1292.json b/.sqlx/query-943f1db531b69c702501283fdaaed62fb054e9add442bc1a0ccd851d493c1292.json deleted file mode 100644 index 44d9c466..00000000 --- a/.sqlx/query-943f1db531b69c702501283fdaaed62fb054e9add442bc1a0ccd851d493c1292.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO products (id, category_id, title, description, cover_url, product_type, fulfillment_type, delivery_hook, weight, price, currency, attributes, sort_order, slug, content, image_ids, original_price, specs, unit, min_purchase, max_purchase, virtual_sales, meta_title, meta_description, og_title, og_description, og_image, stock, cost_price, sale_price, has_variants, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32, ?33, ?34)", - "describe": { - "columns": [], - "parameters": { - "Right": 34 - }, - "nullable": [] - }, - "hash": "943f1db531b69c702501283fdaaed62fb054e9add442bc1a0ccd851d493c1292" -} diff --git a/.sqlx/query-97829829cd0cb4cba104522aaadacdef534b7bed029494180df79eeb01d11b86.json b/.sqlx/query-97829829cd0cb4cba104522aaadacdef534b7bed029494180df79eeb01d11b86.json deleted file mode 100644 index 516bd603..00000000 --- a/.sqlx/query-97829829cd0cb4cba104522aaadacdef534b7bed029494180df79eeb01d11b86.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO orders (id, user_id, order_no, subtotal, discount_amount, shipping_amount, total_amount, currency, buyer_name, buyer_phone, buyer_email, shipping_address, remark, tax_amount, coupon_id, shipping_address_id, billing_address_id, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20)", - "describe": { - "columns": [], - "parameters": { - "Right": 20 - }, - "nullable": [] - }, - "hash": "97829829cd0cb4cba104522aaadacdef534b7bed029494180df79eeb01d11b86" -} diff --git a/.sqlx/query-9809fae846997424ccd2d37c90622d568b3c71b31c662b543a90d57d2f0075e9.json b/.sqlx/query-9809fae846997424ccd2d37c90622d568b3c71b31c662b543a90d57d2f0075e9.json new file mode 100644 index 00000000..636ce1aa --- /dev/null +++ b/.sqlx/query-9809fae846997424ccd2d37c90622d568b3c71b31c662b543a90d57d2f0075e9.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `coupons` (`id`, `code`, `title`, `coupon_type`, `value`, `min_order`, `max_uses`, `used_count`, `max_uses_per_user`, `starts_at`, `expires_at`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 13 + }, + "nullable": [] + }, + "hash": "9809fae846997424ccd2d37c90622d568b3c71b31c662b543a90d57d2f0075e9" +} diff --git a/.sqlx/query-993e6fa2ea86bf9dd8333b682e9bb2c728dc7cd3f2e7e8787d26c4f73dec405c.json b/.sqlx/query-993e6fa2ea86bf9dd8333b682e9bb2c728dc7cd3f2e7e8787d26c4f73dec405c.json new file mode 100644 index 00000000..30e7d29b --- /dev/null +++ b/.sqlx/query-993e6fa2ea86bf9dd8333b682e9bb2c728dc7cd3f2e7e8787d26c4f73dec405c.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `user_credentials` (`id`, `user_id`, `auth_type`, `identifier`, `credential_data`, `verified`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "993e6fa2ea86bf9dd8333b682e9bb2c728dc7cd3f2e7e8787d26c4f73dec405c" +} diff --git a/.sqlx/query-9b99a14fd1f97d84704a85c0ecabc8fe7621e783dc86af4af9ccaccf2263b0b3.json b/.sqlx/query-9b99a14fd1f97d84704a85c0ecabc8fe7621e783dc86af4af9ccaccf2263b0b3.json deleted file mode 100644 index 46c8f460..00000000 --- a/.sqlx/query-9b99a14fd1f97d84704a85c0ecabc8fe7621e783dc86af4af9ccaccf2263b0b3.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO roles (id, name, description, is_system, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6)", - "describe": { - "columns": [], - "parameters": { - "Right": 6 - }, - "nullable": [] - }, - "hash": "9b99a14fd1f97d84704a85c0ecabc8fe7621e783dc86af4af9ccaccf2263b0b3" -} diff --git a/.sqlx/query-9f2b0f4b8dd82f81ffc0802eca98ff38ae754f197a493183d29003daf53c1912.json b/.sqlx/query-9f2b0f4b8dd82f81ffc0802eca98ff38ae754f197a493183d29003daf53c1912.json deleted file mode 100644 index d526dc72..00000000 --- a/.sqlx/query-9f2b0f4b8dd82f81ffc0802eca98ff38ae754f197a493183d29003daf53c1912.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO orders (id, user_id, order_no, subtotal, discount_amount, shipping_amount, total_amount, currency, buyer_name, buyer_phone, buyer_email, shipping_address, remark, tax_amount, coupon_id, shipping_address_id, billing_address_id, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19)", - "describe": { - "columns": [], - "parameters": { - "Right": 19 - }, - "nullable": [] - }, - "hash": "9f2b0f4b8dd82f81ffc0802eca98ff38ae754f197a493183d29003daf53c1912" -} diff --git a/.sqlx/query-a1d52b140cb8e9103ae7c4d8503feac85735e87fc7031987ec5b052c62f40791.json b/.sqlx/query-a1d52b140cb8e9103ae7c4d8503feac85735e87fc7031987ec5b052c62f40791.json new file mode 100644 index 00000000..27a5a765 --- /dev/null +++ b/.sqlx/query-a1d52b140cb8e9103ae7c4d8503feac85735e87fc7031987ec5b052c62f40791.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `users` (`id`, `username`, `created_at`, `updated_at`, `role`, `status`, `registered_via`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "a1d52b140cb8e9103ae7c4d8503feac85735e87fc7031987ec5b052c62f40791" +} diff --git a/.sqlx/query-a59c89fc04a16acca91715ef62fc747cb9685f805763b8628f8a7433bddbd17e.json b/.sqlx/query-a59c89fc04a16acca91715ef62fc747cb9685f805763b8628f8a7433bddbd17e.json deleted file mode 100644 index 53a59767..00000000 --- a/.sqlx/query-a59c89fc04a16acca91715ef62fc747cb9685f805763b8628f8a7433bddbd17e.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO content_revisions (id, content_type, record_id, revision_number, snapshot, created_by, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "a59c89fc04a16acca91715ef62fc747cb9685f805763b8628f8a7433bddbd17e" -} diff --git a/.sqlx/query-a7ec5794b6cd37c1318ecccc96fb1a3a58b9b9577a955d654cc198e5283f9e31.json b/.sqlx/query-a7ec5794b6cd37c1318ecccc96fb1a3a58b9b9577a955d654cc198e5283f9e31.json new file mode 100644 index 00000000..2dd11839 --- /dev/null +++ b/.sqlx/query-a7ec5794b6cd37c1318ecccc96fb1a3a58b9b9577a955d654cc198e5283f9e31.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `cart_items` (`id`, `user_id`, `product_id`, `variant_id`, `quantity`, `attributes`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 9 + }, + "nullable": [] + }, + "hash": "a7ec5794b6cd37c1318ecccc96fb1a3a58b9b9577a955d654cc198e5283f9e31" +} diff --git a/.sqlx/query-a9f3579fc327fad0377051402d61272644c6d0521b0217d32199150c7b5d84be.json b/.sqlx/query-a9f3579fc327fad0377051402d61272644c6d0521b0217d32199150c7b5d84be.json deleted file mode 100644 index 1ac6ca41..00000000 --- a/.sqlx/query-a9f3579fc327fad0377051402d61272644c6d0521b0217d32199150c7b5d84be.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO comments (id, post_id, created_by, updated_by, nickname, email, content, parent_id, created_at, updated_at, status, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", - "describe": { - "columns": [], - "parameters": { - "Right": 12 - }, - "nullable": [] - }, - "hash": "a9f3579fc327fad0377051402d61272644c6d0521b0217d32199150c7b5d84be" -} diff --git a/.sqlx/query-aaef6571ce9e1c5ea71c70df6d98b47b2f64b5d635f0219e8930a21a1c62a57f.json b/.sqlx/query-aaef6571ce9e1c5ea71c70df6d98b47b2f64b5d635f0219e8930a21a1c62a57f.json new file mode 100644 index 00000000..a9957c06 --- /dev/null +++ b/.sqlx/query-aaef6571ce9e1c5ea71c70df6d98b47b2f64b5d635f0219e8930a21a1c62a57f.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `users` (`id`, `tenant_id`, `username`, `created_at`, `updated_at`, `role`, `status`, `registered_via`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "aaef6571ce9e1c5ea71c70df6d98b47b2f64b5d635f0219e8930a21a1c62a57f" +} diff --git a/.sqlx/query-acadb66024ea14bee925ff20f3873bcab990ef65358dcb099427a468a039ec27.json b/.sqlx/query-acadb66024ea14bee925ff20f3873bcab990ef65358dcb099427a468a039ec27.json new file mode 100644 index 00000000..12668a22 --- /dev/null +++ b/.sqlx/query-acadb66024ea14bee925ff20f3873bcab990ef65358dcb099427a468a039ec27.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `products` (`id`, `category_id`, `title`, `description`, `cover_url`, `product_type`, `fulfillment_type`, `delivery_hook`, `weight`, `price`, `currency`, `attributes`, `sort_order`, `slug`, `content`, `image_ids`, `original_price`, `specs`, `unit`, `min_purchase`, `max_purchase`, `virtual_sales`, `meta_title`, `meta_description`, `og_title`, `og_description`, `og_image`, `stock`, `cost_price`, `sale_price`, `has_variants`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 34 + }, + "nullable": [] + }, + "hash": "acadb66024ea14bee925ff20f3873bcab990ef65358dcb099427a468a039ec27" +} diff --git a/.sqlx/query-ad5b266a6cb1ef5829dc1c20795559e9732b78d90183a72109537bacd7ca3fb6.json b/.sqlx/query-ad5b266a6cb1ef5829dc1c20795559e9732b78d90183a72109537bacd7ca3fb6.json new file mode 100644 index 00000000..00b32161 --- /dev/null +++ b/.sqlx/query-ad5b266a6cb1ef5829dc1c20795559e9732b78d90183a72109537bacd7ca3fb6.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_refunds` (`id`, `payment_order_id`, `order_id`, `user_id`, `amount`, `currency`, `reason`, `provider_refund_id`, `status`, `payment_tx_id`, `metadata`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 14 + }, + "nullable": [] + }, + "hash": "ad5b266a6cb1ef5829dc1c20795559e9732b78d90183a72109537bacd7ca3fb6" +} diff --git a/.sqlx/query-ad774fbed6cae7374e7b6a846b8f47c323d58ecb7b5a5720a887e00cfe66041c.json b/.sqlx/query-ad774fbed6cae7374e7b6a846b8f47c323d58ecb7b5a5720a887e00cfe66041c.json deleted file mode 100644 index 34a463a0..00000000 --- a/.sqlx/query-ad774fbed6cae7374e7b6a846b8f47c323d58ecb7b5a5720a887e00cfe66041c.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO plugin_storage (plugin_id, storage_key, value, expires_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5) ON CONFLICT(plugin_id, storage_key) DO UPDATE SET value = excluded.value, expires_at = excluded.expires_at, updated_at = excluded.updated_at", - "describe": { - "columns": [], - "parameters": { - "Right": 5 - }, - "nullable": [] - }, - "hash": "ad774fbed6cae7374e7b6a846b8f47c323d58ecb7b5a5720a887e00cfe66041c" -} diff --git a/.sqlx/query-b099dcc0d81fb281e3116a19b5dfd976b0649521feb42c881acd8f8be09406f0.json b/.sqlx/query-b099dcc0d81fb281e3116a19b5dfd976b0649521feb42c881acd8f8be09406f0.json new file mode 100644 index 00000000..967317ac --- /dev/null +++ b/.sqlx/query-b099dcc0d81fb281e3116a19b5dfd976b0649521feb42c881acd8f8be09406f0.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_transactions` (`id`, `payment_order_id`, `order_id`, `user_id`, `tx_type`, `amount`, `currency`, `provider_tx_id`, `status`, `raw_payload`, `created_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 12 + }, + "nullable": [] + }, + "hash": "b099dcc0d81fb281e3116a19b5dfd976b0649521feb42c881acd8f8be09406f0" +} diff --git a/.sqlx/query-b48d717f1f3713fcc2d11baa83d8ce24d1b84cb148c87fdcbda5f69e9c267743.json b/.sqlx/query-b48d717f1f3713fcc2d11baa83d8ce24d1b84cb148c87fdcbda5f69e9c267743.json deleted file mode 100644 index dd8ff85a..00000000 --- a/.sqlx/query-b48d717f1f3713fcc2d11baa83d8ce24d1b84cb148c87fdcbda5f69e9c267743.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO wallet_outbox (id, user_id, currency, amount, entry_type, tx_type, transaction_no, reference_type, reference_id, metadata, status, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)", - "describe": { - "columns": [], - "parameters": { - "Right": 13 - }, - "nullable": [] - }, - "hash": "b48d717f1f3713fcc2d11baa83d8ce24d1b84cb148c87fdcbda5f69e9c267743" -} diff --git a/.sqlx/query-b639f68669f95f788fc14c2819e0a7c786032576dd87990c42d1fa23d37bd730.json b/.sqlx/query-b639f68669f95f788fc14c2819e0a7c786032576dd87990c42d1fa23d37bd730.json new file mode 100644 index 00000000..cecc2f4c --- /dev/null +++ b/.sqlx/query-b639f68669f95f788fc14c2819e0a7c786032576dd87990c42d1fa23d37bd730.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `email_verification_tokens` (`id`, `user_id`, `token`, `email`, `expires_at`, `created_at`) VALUES (?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 6 + }, + "nullable": [] + }, + "hash": "b639f68669f95f788fc14c2819e0a7c786032576dd87990c42d1fa23d37bd730" +} diff --git a/.sqlx/query-b76f4e37b51afe15519f57c4046282090c0b874557bf646ef9b2e7c623c28cde.json b/.sqlx/query-b76f4e37b51afe15519f57c4046282090c0b874557bf646ef9b2e7c623c28cde.json deleted file mode 100644 index 98172c80..00000000 --- a/.sqlx/query-b76f4e37b51afe15519f57c4046282090c0b874557bf646ef9b2e7c623c28cde.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO cart_items (id, user_id, product_id, variant_id, quantity, attributes, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)", - "describe": { - "columns": [], - "parameters": { - "Right": 9 - }, - "nullable": [] - }, - "hash": "b76f4e37b51afe15519f57c4046282090c0b874557bf646ef9b2e7c623c28cde" -} diff --git a/.sqlx/query-b8c1052e2e35b3c762d36e1123d9b0ec18617974eea17f926a4ea4064549854f.json b/.sqlx/query-b8c1052e2e35b3c762d36e1123d9b0ec18617974eea17f926a4ea4064549854f.json deleted file mode 100644 index 5109baaa..00000000 --- a/.sqlx/query-b8c1052e2e35b3c762d36e1123d9b0ec18617974eea17f926a4ea4064549854f.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_orders (id, user_id, order_id, title, amount, currency, channel_id, provider, reference_type, reference_id, return_url, idempotency_key, client_ip, client_language, client_country, client_user_agent, channel_selected_by, metadata, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21)", - "describe": { - "columns": [], - "parameters": { - "Right": 21 - }, - "nullable": [] - }, - "hash": "b8c1052e2e35b3c762d36e1123d9b0ec18617974eea17f926a4ea4064549854f" -} diff --git a/.sqlx/query-b972949428e68d37ad3075ff6c15d470924d68eccf4acfe0ca71907d46f7ea87.json b/.sqlx/query-b972949428e68d37ad3075ff6c15d470924d68eccf4acfe0ca71907d46f7ea87.json deleted file mode 100644 index 70c9544e..00000000 --- a/.sqlx/query-b972949428e68d37ad3075ff6c15d470924d68eccf4acfe0ca71907d46f7ea87.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO webhook_subscriptions (id, url, secret, events, enabled, description, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "b972949428e68d37ad3075ff6c15d470924d68eccf4acfe0ca71907d46f7ea87" -} diff --git a/.sqlx/query-bc7ddaca8a13c9efbd3bb5e34ad5a54230203a1e51a54b03f7a9b9dd622132fb.json b/.sqlx/query-bc7ddaca8a13c9efbd3bb5e34ad5a54230203a1e51a54b03f7a9b9dd622132fb.json deleted file mode 100644 index b790fb2d..00000000 --- a/.sqlx/query-bc7ddaca8a13c9efbd3bb5e34ad5a54230203a1e51a54b03f7a9b9dd622132fb.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO shipping_templates (id, name, type, first_unit, first_price, additional_unit, additional_price, free_shipping_amount, regions, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", - "describe": { - "columns": [], - "parameters": { - "Right": 11 - }, - "nullable": [] - }, - "hash": "bc7ddaca8a13c9efbd3bb5e34ad5a54230203a1e51a54b03f7a9b9dd622132fb" -} diff --git a/.sqlx/query-bccaa81b9d8979c9313a585be1ab21a2a87033ee69ee5a5e9498062e4e49722c.json b/.sqlx/query-bccaa81b9d8979c9313a585be1ab21a2a87033ee69ee5a5e9498062e4e49722c.json deleted file mode 100644 index 0481cbb3..00000000 --- a/.sqlx/query-bccaa81b9d8979c9313a585be1ab21a2a87033ee69ee5a5e9498062e4e49722c.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO tags (id, name, slug, created_by, updated_by, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "bccaa81b9d8979c9313a585be1ab21a2a87033ee69ee5a5e9498062e4e49722c" -} diff --git a/.sqlx/query-be4324ba43c80e343b654c60768b612494c1374783989d5a1353a99cb39cbe90.json b/.sqlx/query-be4324ba43c80e343b654c60768b612494c1374783989d5a1353a99cb39cbe90.json deleted file mode 100644 index ba2e8223..00000000 --- a/.sqlx/query-be4324ba43c80e343b654c60768b612494c1374783989d5a1353a99cb39cbe90.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_channels (id, provider, name, is_live, credentials, webhook_secret, settings, is_active, sort_order, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", - "describe": { - "columns": [], - "parameters": { - "Right": 12 - }, - "nullable": [] - }, - "hash": "be4324ba43c80e343b654c60768b612494c1374783989d5a1353a99cb39cbe90" -} diff --git a/.sqlx/query-c2ad5b81e8dbab0c513e46a2e0f01e7f4b88faf7277f580b0115c3006579b41e.json b/.sqlx/query-c2ad5b81e8dbab0c513e46a2e0f01e7f4b88faf7277f580b0115c3006579b41e.json new file mode 100644 index 00000000..df02eb91 --- /dev/null +++ b/.sqlx/query-c2ad5b81e8dbab0c513e46a2e0f01e7f4b88faf7277f580b0115c3006579b41e.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `product_comments` (`id`, `product_id`, `order_id`, `user_id`, `rating`, `title`, `content`, `images`, `status`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 12 + }, + "nullable": [] + }, + "hash": "c2ad5b81e8dbab0c513e46a2e0f01e7f4b88faf7277f580b0115c3006579b41e" +} diff --git a/.sqlx/query-c78e8396f3ba8b01bf5acaee1e4fe5dbe67bda983ff018de9948ac6eae5719a7.json b/.sqlx/query-c78e8396f3ba8b01bf5acaee1e4fe5dbe67bda983ff018de9948ac6eae5719a7.json deleted file mode 100644 index 208b6026..00000000 --- a/.sqlx/query-c78e8396f3ba8b01bf5acaee1e4fe5dbe67bda983ff018de9948ac6eae5719a7.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO currencies (id, tenant_id, code, name, decimals, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "c78e8396f3ba8b01bf5acaee1e4fe5dbe67bda983ff018de9948ac6eae5719a7" -} diff --git a/.sqlx/query-ca026c702e1f298987fddaeef413f80ef1145b31d56d43bb780b8db500f4c6c2.json b/.sqlx/query-ca026c702e1f298987fddaeef413f80ef1145b31d56d43bb780b8db500f4c6c2.json deleted file mode 100644 index b13f3af1..00000000 --- a/.sqlx/query-ca026c702e1f298987fddaeef413f80ef1145b31d56d43bb780b8db500f4c6c2.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO user_addresses (id, user_id, label, recipient_name, phone, country, province, city, district, address_line1, address_line2, postal_code, is_default, address_type, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17)", - "describe": { - "columns": [], - "parameters": { - "Right": 17 - }, - "nullable": [] - }, - "hash": "ca026c702e1f298987fddaeef413f80ef1145b31d56d43bb780b8db500f4c6c2" -} diff --git a/.sqlx/query-cc7c5ec6442985bd444e8452da2e690472890d20b8fd1ec2ea67ccdfa5618480.json b/.sqlx/query-cc7c5ec6442985bd444e8452da2e690472890d20b8fd1ec2ea67ccdfa5618480.json new file mode 100644 index 00000000..dbe6eeaa --- /dev/null +++ b/.sqlx/query-cc7c5ec6442985bd444e8452da2e690472890d20b8fd1ec2ea67ccdfa5618480.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `cron_execution_log` (`id`, `schedule_id`, `job_type`, `label`, `status`, `started_at`) VALUES (?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 6 + }, + "nullable": [] + }, + "hash": "cc7c5ec6442985bd444e8452da2e690472890d20b8fd1ec2ea67ccdfa5618480" +} diff --git a/.sqlx/query-cdaf7a8cb2657d0c7cd05d9219f6be599279b1adc3978387c42eca5eb7fd23ad.json b/.sqlx/query-cdaf7a8cb2657d0c7cd05d9219f6be599279b1adc3978387c42eca5eb7fd23ad.json deleted file mode 100644 index ed2d6a3e..00000000 --- a/.sqlx/query-cdaf7a8cb2657d0c7cd05d9219f6be599279b1adc3978387c42eca5eb7fd23ad.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_refunds (id, payment_order_id, order_id, user_id, amount, currency, reason, provider_refund_id, status, payment_tx_id, metadata, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)", - "describe": { - "columns": [], - "parameters": { - "Right": 14 - }, - "nullable": [] - }, - "hash": "cdaf7a8cb2657d0c7cd05d9219f6be599279b1adc3978387c42eca5eb7fd23ad" -} diff --git a/.sqlx/query-d18b1cf1500e819d96fdfcbd8bedd3aa11047cf03216ca57420ea05ea8c6f080.json b/.sqlx/query-d18b1cf1500e819d96fdfcbd8bedd3aa11047cf03216ca57420ea05ea8c6f080.json new file mode 100644 index 00000000..10bc147d --- /dev/null +++ b/.sqlx/query-d18b1cf1500e819d96fdfcbd8bedd3aa11047cf03216ca57420ea05ea8c6f080.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `product_variants` (`id`, `product_id`, `sku`, `title`, `price`, `original_price`, `stock`, `attributes`, `image_url`, `weight`, `sort_order`, `is_active`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 14 + }, + "nullable": [] + }, + "hash": "d18b1cf1500e819d96fdfcbd8bedd3aa11047cf03216ca57420ea05ea8c6f080" +} diff --git a/.sqlx/query-d2b4884649a5e2b3d4b878dbd3d2216ca9e12ad42ce0dd80f2e300faa940c51a.json b/.sqlx/query-d2b4884649a5e2b3d4b878dbd3d2216ca9e12ad42ce0dd80f2e300faa940c51a.json new file mode 100644 index 00000000..8d27d8d6 --- /dev/null +++ b/.sqlx/query-d2b4884649a5e2b3d4b878dbd3d2216ca9e12ad42ce0dd80f2e300faa940c51a.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `oauth_states` (`id`, `provider`, `code_verifier`, `user_id`, `expires_at`, `created_at`) VALUES (?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 6 + }, + "nullable": [] + }, + "hash": "d2b4884649a5e2b3d4b878dbd3d2216ca9e12ad42ce0dd80f2e300faa940c51a" +} diff --git a/.sqlx/query-d2c0664af1f1d6a3f1ee9e471042791787d939db1493f3be3bdbd1b991e51ec7.json b/.sqlx/query-d2c0664af1f1d6a3f1ee9e471042791787d939db1493f3be3bdbd1b991e51ec7.json new file mode 100644 index 00000000..e960ba54 --- /dev/null +++ b/.sqlx/query-d2c0664af1f1d6a3f1ee9e471042791787d939db1493f3be3bdbd1b991e51ec7.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `user_addresses` (`id`, `user_id`, `label`, `recipient_name`, `phone`, `country`, `province`, `city`, `district`, `address_line1`, `address_line2`, `postal_code`, `is_default`, `address_type`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 17 + }, + "nullable": [] + }, + "hash": "d2c0664af1f1d6a3f1ee9e471042791787d939db1493f3be3bdbd1b991e51ec7" +} diff --git a/.sqlx/query-d4be79248c1b060067e1a5bd4252212a24bcedbb15b4b011dbc382ff2251234c.json b/.sqlx/query-d4be79248c1b060067e1a5bd4252212a24bcedbb15b4b011dbc382ff2251234c.json deleted file mode 100644 index 7ba2eb1f..00000000 --- a/.sqlx/query-d4be79248c1b060067e1a5bd4252212a24bcedbb15b4b011dbc382ff2251234c.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO workflow_instances (id, definition_id, status, context, triggered_by, started_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "d4be79248c1b060067e1a5bd4252212a24bcedbb15b4b011dbc382ff2251234c" -} diff --git a/.sqlx/query-d822d41544f6532882c080e7f53aaa7137dde5b5dfd9f921dec7ad0efe9b7e0a.json b/.sqlx/query-d822d41544f6532882c080e7f53aaa7137dde5b5dfd9f921dec7ad0efe9b7e0a.json deleted file mode 100644 index 624f8fa9..00000000 --- a/.sqlx/query-d822d41544f6532882c080e7f53aaa7137dde5b5dfd9f921dec7ad0efe9b7e0a.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO taggings (id, tag_id, taggable_type, taggable_id) VALUES (?1, ?2, ?3, ?4)", - "describe": { - "columns": [], - "parameters": { - "Right": 4 - }, - "nullable": [] - }, - "hash": "d822d41544f6532882c080e7f53aaa7137dde5b5dfd9f921dec7ad0efe9b7e0a" -} diff --git a/.sqlx/query-d855e7b6043f446da20272d8bf1e6682c2e39ef36e523ddfc61514368acfe527.json b/.sqlx/query-d855e7b6043f446da20272d8bf1e6682c2e39ef36e523ddfc61514368acfe527.json new file mode 100644 index 00000000..15661249 --- /dev/null +++ b/.sqlx/query-d855e7b6043f446da20272d8bf1e6682c2e39ef36e523ddfc61514368acfe527.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `reusable_blocks` (`id`, `name`, `block_type`, `content`, `description`, `created_by`, `updated_by`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 10 + }, + "nullable": [] + }, + "hash": "d855e7b6043f446da20272d8bf1e6682c2e39ef36e523ddfc61514368acfe527" +} diff --git a/.sqlx/query-d89bd67cebf11fbf5c4a3150ca3a2996735aeb9f396e71d81fa3fd312abd18ef.json b/.sqlx/query-d89bd67cebf11fbf5c4a3150ca3a2996735aeb9f396e71d81fa3fd312abd18ef.json new file mode 100644 index 00000000..3cf60069 --- /dev/null +++ b/.sqlx/query-d89bd67cebf11fbf5c4a3150ca3a2996735aeb9f396e71d81fa3fd312abd18ef.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `api_tokens` (`id`, `user_id`, `name`, `token_hash`, `token_prefix`, `scopes`, `expires_at`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "d89bd67cebf11fbf5c4a3150ca3a2996735aeb9f396e71d81fa3fd312abd18ef" +} diff --git a/.sqlx/query-dd7225908a5194c0acc8920ffe17259c0eff4236af28441bf62a8b83e267e8cc.json b/.sqlx/query-dd7225908a5194c0acc8920ffe17259c0eff4236af28441bf62a8b83e267e8cc.json new file mode 100644 index 00000000..ce97c9bd --- /dev/null +++ b/.sqlx/query-dd7225908a5194c0acc8920ffe17259c0eff4236af28441bf62a8b83e267e8cc.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `taggings` (`id`, `tag_id`, `taggable_type`, `taggable_id`) VALUES (?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 4 + }, + "nullable": [] + }, + "hash": "dd7225908a5194c0acc8920ffe17259c0eff4236af28441bf62a8b83e267e8cc" +} diff --git a/.sqlx/query-e1f4ba6c8e47070ce25b384cb18a2d41ec9221e5cf5cabc375cb3b77314dd660.json b/.sqlx/query-e1f4ba6c8e47070ce25b384cb18a2d41ec9221e5cf5cabc375cb3b77314dd660.json new file mode 100644 index 00000000..b3a30426 --- /dev/null +++ b/.sqlx/query-e1f4ba6c8e47070ce25b384cb18a2d41ec9221e5cf5cabc375cb3b77314dd660.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `audit_log` (`id`, `actor_id`, `actor_role`, `action`, `subject`, `subject_id`, `detail`, `ip_address`, `user_agent`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 10 + }, + "nullable": [] + }, + "hash": "e1f4ba6c8e47070ce25b384cb18a2d41ec9221e5cf5cabc375cb3b77314dd660" +} diff --git a/.sqlx/query-e35f9b20d7340b4c59889732d552af772028c349bd46e073b15a6055364b059f.json b/.sqlx/query-e35f9b20d7340b4c59889732d552af772028c349bd46e073b15a6055364b059f.json deleted file mode 100644 index 9c553404..00000000 --- a/.sqlx/query-e35f9b20d7340b4c59889732d552af772028c349bd46e073b15a6055364b059f.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO users (id, username, created_at, updated_at, role, status, registered_via, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", - "describe": { - "columns": [], - "parameters": { - "Right": 8 - }, - "nullable": [] - }, - "hash": "e35f9b20d7340b4c59889732d552af772028c349bd46e073b15a6055364b059f" -} diff --git a/.sqlx/query-e38cf91855fc4c311b74f695bf6f06900f9650c01673379f6eb26e0b42df1487.json b/.sqlx/query-e38cf91855fc4c311b74f695bf6f06900f9650c01673379f6eb26e0b42df1487.json deleted file mode 100644 index 6f5e2f9c..00000000 --- a/.sqlx/query-e38cf91855fc4c311b74f695bf6f06900f9650c01673379f6eb26e0b42df1487.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO payment_refunds (id, payment_order_id, order_id, user_id, amount, currency, reason, provider_refund_id, status, metadata, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", - "describe": { - "columns": [], - "parameters": { - "Right": 12 - }, - "nullable": [] - }, - "hash": "e38cf91855fc4c311b74f695bf6f06900f9650c01673379f6eb26e0b42df1487" -} diff --git a/.sqlx/query-e3e37a00e9f5aa573c3cf0e58dc549e8be4f1e8d067592c7197dbbfade4ad3c3.json b/.sqlx/query-e3e37a00e9f5aa573c3cf0e58dc549e8be4f1e8d067592c7197dbbfade4ad3c3.json new file mode 100644 index 00000000..192784d3 --- /dev/null +++ b/.sqlx/query-e3e37a00e9f5aa573c3cf0e58dc549e8be4f1e8d067592c7197dbbfade4ad3c3.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `sms_codes` (`id`, `phone`, `code`, `purpose`, `expires_at`, `ip_address`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 7 + }, + "nullable": [] + }, + "hash": "e3e37a00e9f5aa573c3cf0e58dc549e8be4f1e8d067592c7197dbbfade4ad3c3" +} diff --git a/.sqlx/query-e42e6f66a9e9eaf49e3d2b554ed0069bcfbfe61ea8befde895bae56980e4f778.json b/.sqlx/query-e42e6f66a9e9eaf49e3d2b554ed0069bcfbfe61ea8befde895bae56980e4f778.json deleted file mode 100644 index 8cee7e59..00000000 --- a/.sqlx/query-e42e6f66a9e9eaf49e3d2b554ed0069bcfbfe61ea8befde895bae56980e4f778.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO sms_codes (id, phone, code, purpose, expires_at, ip_address, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "e42e6f66a9e9eaf49e3d2b554ed0069bcfbfe61ea8befde895bae56980e4f778" -} diff --git a/.sqlx/query-e4edc339cde1b12bdbe5e8cc761d49e37541daf536c2ce5b13d37bf7594dd208.json b/.sqlx/query-e4edc339cde1b12bdbe5e8cc761d49e37541daf536c2ce5b13d37bf7594dd208.json deleted file mode 100644 index 799a262f..00000000 --- a/.sqlx/query-e4edc339cde1b12bdbe5e8cc761d49e37541daf536c2ce5b13d37bf7594dd208.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO password_reset_tokens (id, user_id, token, expires_at, created_at) VALUES (?1, ?2, ?3, ?4, ?5)", - "describe": { - "columns": [], - "parameters": { - "Right": 5 - }, - "nullable": [] - }, - "hash": "e4edc339cde1b12bdbe5e8cc761d49e37541daf536c2ce5b13d37bf7594dd208" -} diff --git a/.sqlx/query-e70ee66c7c9c4b23fe6493ac8ffc29c70db8a55973912b740dbbda6d732e3ccb.json b/.sqlx/query-e70ee66c7c9c4b23fe6493ac8ffc29c70db8a55973912b740dbbda6d732e3ccb.json new file mode 100644 index 00000000..60bbb0e0 --- /dev/null +++ b/.sqlx/query-e70ee66c7c9c4b23fe6493ac8ffc29c70db8a55973912b740dbbda6d732e3ccb.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `comments` (`id`, `post_id`, `created_by`, `updated_by`, `nickname`, `email`, `content`, `parent_id`, `created_at`, `updated_at`, `status`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 11 + }, + "nullable": [] + }, + "hash": "e70ee66c7c9c4b23fe6493ac8ffc29c70db8a55973912b740dbbda6d732e3ccb" +} diff --git a/.sqlx/query-e729c266734237d11e1c75aabb5a5734a015f88dd88e5aa6c700f0d653342ab4.json b/.sqlx/query-e729c266734237d11e1c75aabb5a5734a015f88dd88e5aa6c700f0d653342ab4.json new file mode 100644 index 00000000..fc8a10a9 --- /dev/null +++ b/.sqlx/query-e729c266734237d11e1c75aabb5a5734a015f88dd88e5aa6c700f0d653342ab4.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `wallets` (`id`, `user_id`, `currency`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 5 + }, + "nullable": [] + }, + "hash": "e729c266734237d11e1c75aabb5a5734a015f88dd88e5aa6c700f0d653342ab4" +} diff --git a/.sqlx/query-e98bc4e8e2a638f8ab6975434ce4a0fb878766c133aa944f6a7336e247621da2.json b/.sqlx/query-e98bc4e8e2a638f8ab6975434ce4a0fb878766c133aa944f6a7336e247621da2.json new file mode 100644 index 00000000..6fa75669 --- /dev/null +++ b/.sqlx/query-e98bc4e8e2a638f8ab6975434ce4a0fb878766c133aa944f6a7336e247621da2.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `cron_schedules` (`id`, `label`, `job_type`, `payload`, `cron_expr`, `enabled`, `next_run_at`, `plugin_id`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 10 + }, + "nullable": [] + }, + "hash": "e98bc4e8e2a638f8ab6975434ce4a0fb878766c133aa944f6a7336e247621da2" +} diff --git a/.sqlx/query-ea6c5ec76a1c29d0c36e2cb907346ba9fd62eb88a891d9e4927f42098a859011.json b/.sqlx/query-ea6c5ec76a1c29d0c36e2cb907346ba9fd62eb88a891d9e4927f42098a859011.json new file mode 100644 index 00000000..7bcfabf3 --- /dev/null +++ b/.sqlx/query-ea6c5ec76a1c29d0c36e2cb907346ba9fd62eb88a891d9e4927f42098a859011.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `wallet_transactions` (`id`, `wallet_id`, `user_id`, `entry_type`, `amount`, `balance_after`, `tx_type`, `currency`, `transaction_no`, `related_tx_id`, `reference_type`, `reference_id`, `counterparty_wallet_id`, `metadata`, `created_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 15 + }, + "nullable": [] + }, + "hash": "ea6c5ec76a1c29d0c36e2cb907346ba9fd62eb88a891d9e4927f42098a859011" +} diff --git a/.sqlx/query-ecbc26ef819413f43919d03094e879d93406d56b2bfd546be60ffa966e24bc28.json b/.sqlx/query-ecbc26ef819413f43919d03094e879d93406d56b2bfd546be60ffa966e24bc28.json new file mode 100644 index 00000000..9aa7f726 --- /dev/null +++ b/.sqlx/query-ecbc26ef819413f43919d03094e879d93406d56b2bfd546be60ffa966e24bc28.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `payment_orders` (`id`, `user_id`, `order_id`, `title`, `amount`, `currency`, `channel_id`, `provider`, `reference_type`, `reference_id`, `return_url`, `idempotency_key`, `client_ip`, `client_language`, `client_country`, `client_user_agent`, `channel_selected_by`, `metadata`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 21 + }, + "nullable": [] + }, + "hash": "ecbc26ef819413f43919d03094e879d93406d56b2bfd546be60ffa966e24bc28" +} diff --git a/.sqlx/query-eea5def8af7d059a354e9b1ff5f6661f274cf6e387b3903e5bd75cd1e48074a4.json b/.sqlx/query-eea5def8af7d059a354e9b1ff5f6661f274cf6e387b3903e5bd75cd1e48074a4.json new file mode 100644 index 00000000..18fc9dde --- /dev/null +++ b/.sqlx/query-eea5def8af7d059a354e9b1ff5f6661f274cf6e387b3903e5bd75cd1e48074a4.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `pages` (`id`, `title`, `slug`, `content`, `blocks`, `meta_title`, `meta_description`, `og_image`, `template`, `parent_id`, `sort_order`, `status`, `created_by`, `updated_by`, `cover_image`, `published_at`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 18 + }, + "nullable": [] + }, + "hash": "eea5def8af7d059a354e9b1ff5f6661f274cf6e387b3903e5bd75cd1e48074a4" +} diff --git a/.sqlx/query-f2aee52b49b4f457b919560fc37a61daed0de1f5acbe328a967fea7083598ccf.json b/.sqlx/query-f2aee52b49b4f457b919560fc37a61daed0de1f5acbe328a967fea7083598ccf.json new file mode 100644 index 00000000..2f7a0fa3 --- /dev/null +++ b/.sqlx/query-f2aee52b49b4f457b919560fc37a61daed0de1f5acbe328a967fea7083598ccf.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `tags` (`id`, `name`, `slug`, `created_by`, `updated_by`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 8 + }, + "nullable": [] + }, + "hash": "f2aee52b49b4f457b919560fc37a61daed0de1f5acbe328a967fea7083598ccf" +} diff --git a/.sqlx/query-f467fa102b6de4f9ab23a9820e82ee8a6efd972c54447ad4aedd244c78dab623.json b/.sqlx/query-f467fa102b6de4f9ab23a9820e82ee8a6efd972c54447ad4aedd244c78dab623.json deleted file mode 100644 index 1a6edc00..00000000 --- a/.sqlx/query-f467fa102b6de4f9ab23a9820e82ee8a6efd972c54447ad4aedd244c78dab623.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO product_comments (id, product_id, order_id, user_id, rating, title, content, images, status, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", - "describe": { - "columns": [], - "parameters": { - "Right": 11 - }, - "nullable": [] - }, - "hash": "f467fa102b6de4f9ab23a9820e82ee8a6efd972c54447ad4aedd244c78dab623" -} diff --git a/.sqlx/query-f5d5386a4494093b1a9e07e67df3f92ba7abab707c2ba749fd11ae68bb22aad2.json b/.sqlx/query-f5d5386a4494093b1a9e07e67df3f92ba7abab707c2ba749fd11ae68bb22aad2.json new file mode 100644 index 00000000..cd80fca4 --- /dev/null +++ b/.sqlx/query-f5d5386a4494093b1a9e07e67df3f92ba7abab707c2ba749fd11ae68bb22aad2.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `webhook_subscriptions` (`id`, `url`, `secret`, `events`, `enabled`, `description`, `created_at`, `updated_at`, `tenant_id`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 9 + }, + "nullable": [] + }, + "hash": "f5d5386a4494093b1a9e07e67df3f92ba7abab707c2ba749fd11ae68bb22aad2" +} diff --git a/.sqlx/query-f8207c8b05da03ca3f2c792ba7019ba207e7da6c97254a23c2f5e2773ff32a13.json b/.sqlx/query-f8207c8b05da03ca3f2c792ba7019ba207e7da6c97254a23c2f5e2773ff32a13.json deleted file mode 100644 index cd77dda5..00000000 --- a/.sqlx/query-f8207c8b05da03ca3f2c792ba7019ba207e7da6c97254a23c2f5e2773ff32a13.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO tenants (id, name, domain, config, status, created_at, updated_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)", - "describe": { - "columns": [], - "parameters": { - "Right": 7 - }, - "nullable": [] - }, - "hash": "f8207c8b05da03ca3f2c792ba7019ba207e7da6c97254a23c2f5e2773ff32a13" -} diff --git a/.sqlx/query-fb01268ec816e86f67008ba6c503d6c718be4903b6fd194d7b04a9c64a4a8128.json b/.sqlx/query-fb01268ec816e86f67008ba6c503d6c718be4903b6fd194d7b04a9c64a4a8128.json new file mode 100644 index 00000000..4c35bea1 --- /dev/null +++ b/.sqlx/query-fb01268ec816e86f67008ba6c503d6c718be4903b6fd194d7b04a9c64a4a8128.json @@ -0,0 +1,12 @@ +{ + "db_name": "MySQL", + "query": "INSERT INTO `oauth_accounts` (`id`, `user_id`, `provider`, `provider_user_id`, `email`, `display_name`, `avatar_url`, `access_token`, `refresh_token`, `token_expires_at`, `profile`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 13 + }, + "nullable": [] + }, + "hash": "fb01268ec816e86f67008ba6c503d6c718be4903b6fd194d7b04a9c64a4a8128" +} diff --git a/.sqlx/query-fb1b7a9e183976ff69d1ad9b30bf8f67fc6a75b08939a2ca750a917bcd6b4298.json b/.sqlx/query-fb1b7a9e183976ff69d1ad9b30bf8f67fc6a75b08939a2ca750a917bcd6b4298.json deleted file mode 100644 index b7d771b4..00000000 --- a/.sqlx/query-fb1b7a9e183976ff69d1ad9b30bf8f67fc6a75b08939a2ca750a917bcd6b4298.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO shipping_templates (id, name, type, first_unit, first_price, additional_unit, additional_price, free_shipping_amount, regions, created_at, updated_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)", - "describe": { - "columns": [], - "parameters": { - "Right": 12 - }, - "nullable": [] - }, - "hash": "fb1b7a9e183976ff69d1ad9b30bf8f67fc6a75b08939a2ca750a917bcd6b4298" -} diff --git a/.sqlx/query-fb74bff60db4204bb7b88d4825254d76551d25a16eebec367d92f5ee987d2ade.json b/.sqlx/query-fb74bff60db4204bb7b88d4825254d76551d25a16eebec367d92f5ee987d2ade.json deleted file mode 100644 index f8c51f16..00000000 --- a/.sqlx/query-fb74bff60db4204bb7b88d4825254d76551d25a16eebec367d92f5ee987d2ade.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO audit_log (id, actor_id, actor_role, action, subject, subject_id, detail, ip_address, user_agent, created_at, tenant_id) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)", - "describe": { - "columns": [], - "parameters": { - "Right": 11 - }, - "nullable": [] - }, - "hash": "fb74bff60db4204bb7b88d4825254d76551d25a16eebec367d92f5ee987d2ade" -} diff --git a/.sqlx/query-fbeb58fe9142da315b1101249e6d0c83f4e7f42e239c67fb2780a2791beb849d.json b/.sqlx/query-fbeb58fe9142da315b1101249e6d0c83f4e7f42e239c67fb2780a2791beb849d.json deleted file mode 100644 index 7d0b7e5c..00000000 --- a/.sqlx/query-fbeb58fe9142da315b1101249e6d0c83f4e7f42e239c67fb2780a2791beb849d.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO email_verification_tokens (id, user_id, token, email, expires_at, created_at) VALUES (?1, ?2, ?3, ?4, ?5, ?6)", - "describe": { - "columns": [], - "parameters": { - "Right": 6 - }, - "nullable": [] - }, - "hash": "fbeb58fe9142da315b1101249e6d0c83f4e7f42e239c67fb2780a2791beb849d" -} diff --git a/3rd/bore b/3rd/bore new file mode 160000 index 00000000..00a735a8 --- /dev/null +++ b/3rd/bore @@ -0,0 +1 @@ +Subproject commit 00a735a89917642df62d84336a90d9476fa175b5 diff --git a/Cargo.lock b/Cargo.lock index fd3034f5..1b97da3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1183,6 +1183,29 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "bore-cli" +version = "0.6.0" +dependencies = [ + "anyhow", + "clap", + "dashmap 5.5.3", + "fastrand 1.9.0", + "futures-util", + "hex", + "hmac", + "lazy_static", + "rstest 0.15.0", + "serde", + "serde_json", + "sha2", + "tokio", + "tokio-util", + "tracing", + "tracing-subscriber", + "uuid 1.23.0", +] + [[package]] name = "brotli" version = "8.0.2" @@ -1479,6 +1502,24 @@ dependencies = [ "rand_core 0.10.1", ] +[[package]] +name = "chat-server" +version = "0.1.0" +dependencies = [ + "axum", + "chrono", + "dashmap 6.1.0", + "futures", + "jsonwebtoken", + "regex", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", + "uuid 1.23.0", +] + [[package]] name = "chrono" version = "0.4.44" @@ -2151,6 +2192,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "dashmap" version = "6.1.0" @@ -6303,12 +6357,13 @@ dependencies = [ "axum", "axum-server", "base64 0.22.1", + "bore-cli", "chrono", "chrono-tz 0.10.4", "clap", "comrak", "cron", - "dashmap", + "dashmap 6.1.0", "dotenvy", "ferroid", "futures", @@ -6337,7 +6392,7 @@ dependencies = [ "rquickjs", "rsa", "rss", - "rstest", + "rstest 0.23.0", "rust-embed", "rust-i18n", "rustls 0.23.38", @@ -6905,6 +6960,18 @@ dependencies = [ "quick-xml 0.37.5", ] +[[package]] +name = "rstest" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c9dc66cc29792b663ffb5269be669f1613664e69ad56441fdb895c2347b930" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros 0.14.0", + "rustc_version", +] + [[package]] name = "rstest" version = "0.23.0" @@ -6913,10 +6980,23 @@ checksum = "0a2c585be59b6b5dd66a9d2084aa1d8bd52fbdb806eafdeffb52791147862035" dependencies = [ "futures", "futures-timer", - "rstest_macros", + "rstest_macros 0.23.0", "rustc_version", ] +[[package]] +name = "rstest_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5015e68a0685a95ade3eee617ff7101ab6a3fc689203101ca16ebc16f2b89c66" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + [[package]] name = "rstest_macros" version = "0.23.0" diff --git a/Cargo.toml b/Cargo.toml index 8390fe66..06625dfd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = [".", "raisfast-derive"] +members = [".", "raisfast-derive", "3rd/bore", "extra/chat-server"] resolver = "3" [package] @@ -13,7 +13,7 @@ homepage = "https://github.com/raisfast/raisfast" license = "Apache-2.0" [features] -default = ["db-sqlite", "search-tantivy", "plugin-js", "plugin-lua", "plugin-rhai", "openapi", "proxy"] +default = ["db-sqlite", "search-tantivy", "plugin-js", "plugin-lua", "plugin-rhai", "openapi", "proxy", "tunnel"] # ── Database backend (pick exactly one) ──────────────────────────── db-sqlite = ["sqlx/sqlite"] @@ -53,6 +53,9 @@ export-types = ["ts-rs"] # ── Built-in reverse proxy (multi-tenant) ────────────────────────── proxy = ["dep:hyper", "dep:hyper-util", "dep:http-body-util", "dep:tokio-util"] +# ── Tunnel client (expose local ports via tunnel.raisfast.com) ──── +tunnel = ["dep:bore-cli"] + # ── Tauri desktop mode ──────────────────────────────────────────── tauri = ["dep:tauri"] @@ -187,6 +190,9 @@ hyper-util = { version = "0.1", features = ["tokio", "client", "server", "http1" http-body-util = { version = "0.1", optional = true } tokio-util = { version = "0.7", features = ["rt"], optional = true } +# Tunnel client +bore-cli = { path = "3rd/bore", optional = true } + # OpenAPI utoipa = { version = "5", features = ["axum_extras", "chrono", "uuid"] } diff --git a/justfile b/justfile index b994a998..39200b5e 100644 --- a/justfile +++ b/justfile @@ -16,7 +16,7 @@ plugin_type := "all" default: @just --list -features := "db-" + db + " plugin-js plugin-rhai search-tantivy payment-all" +features := "db-" + db + " plugin-js plugin-rhai search-tantivy payment-all tunnel" # ── Build ───────────────────────────────────────────────────────── diff --git a/migrations/mysql/schema.mysql.sql b/migrations/mysql/schema.mysql.sql index 2c3f126b..def3d6a9 100644 --- a/migrations/mysql/schema.mysql.sql +++ b/migrations/mysql/schema.mysql.sql @@ -296,6 +296,21 @@ CREATE TABLE IF NOT EXISTS sms_codes ( INDEX idx_sms_codes_expires (expires_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +-- User device codes (IDE authentication) +CREATE TABLE IF NOT EXISTS user_device_codes ( + id BIGINT PRIMARY KEY, + user_id BIGINT NOT NULL, + code VARCHAR(255) NOT NULL UNIQUE, + access_token TEXT NOT NULL, + refresh_token TEXT NOT NULL, + expires_at DATETIME NOT NULL, + used_at DATETIME, + created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + INDEX idx_user_device_codes_code (code), + INDEX idx_user_device_codes_user_id (user_id), + INDEX idx_user_device_codes_expires_at (expires_at) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + -- Email verification tokens CREATE TABLE IF NOT EXISTS email_verification_tokens ( id BIGINT PRIMARY KEY, diff --git a/migrations/postgres/schema.postgres.sql b/migrations/postgres/schema.postgres.sql index 06f0af23..9e762c76 100644 --- a/migrations/postgres/schema.postgres.sql +++ b/migrations/postgres/schema.postgres.sql @@ -307,6 +307,22 @@ CREATE TABLE IF NOT EXISTS sms_codes ( CREATE INDEX IF NOT EXISTS idx_sms_codes_phone ON sms_codes(phone); CREATE INDEX IF NOT EXISTS idx_sms_codes_expires ON sms_codes(expires_at); +-- User device codes (IDE authentication) +CREATE TABLE IF NOT EXISTS user_device_codes ( + id BIGINT PRIMARY KEY, + user_id BIGINT NOT NULL, + code VARCHAR(255) NOT NULL UNIQUE, + access_token TEXT NOT NULL, + refresh_token TEXT NOT NULL, + expires_at TIMESTAMP NOT NULL, + used_at TIMESTAMP, + created_at TIMESTAMP NOT NULL DEFAULT NOW() +); + +CREATE INDEX IF NOT EXISTS idx_user_device_codes_code ON user_device_codes(code); +CREATE INDEX IF NOT EXISTS idx_user_device_codes_user_id ON user_device_codes(user_id); +CREATE INDEX IF NOT EXISTS idx_user_device_codes_expires_at ON user_device_codes(expires_at); + -- Email verification tokens CREATE TABLE IF NOT EXISTS email_verification_tokens ( id BIGINT PRIMARY KEY, diff --git a/migrations/sqlite/schema.sqlite.sql b/migrations/sqlite/schema.sqlite.sql index 90521c30..8da77951 100644 --- a/migrations/sqlite/schema.sqlite.sql +++ b/migrations/sqlite/schema.sqlite.sql @@ -311,6 +311,22 @@ CREATE TABLE IF NOT EXISTS sms_codes ( CREATE INDEX IF NOT EXISTS idx_sms_codes_phone ON sms_codes(phone); CREATE INDEX IF NOT EXISTS idx_sms_codes_expires ON sms_codes(expires_at); +-- User device codes (IDE authentication) +CREATE TABLE IF NOT EXISTS user_device_codes ( + id INTEGER PRIMARY KEY, + user_id INTEGER NOT NULL, + code TEXT NOT NULL UNIQUE, + access_token TEXT NOT NULL, + refresh_token TEXT NOT NULL, + expires_at TEXT NOT NULL, + used_at TEXT, + created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')) +); + +CREATE INDEX IF NOT EXISTS idx_user_device_codes_code ON user_device_codes(code); +CREATE INDEX IF NOT EXISTS idx_user_device_codes_user_id ON user_device_codes(user_id); +CREATE INDEX IF NOT EXISTS idx_user_device_codes_expires_at ON user_device_codes(expires_at); + -- Email verification tokens CREATE TABLE IF NOT EXISTS email_verification_tokens ( id INTEGER PRIMARY KEY, diff --git a/src/cli.rs b/src/cli.rs index f7374858..4e58c450 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -11,6 +11,8 @@ mod plugin_cmd; mod route_cmd; mod server_cmd; mod user_cmd; +#[cfg(feature = "tunnel")] +mod tunnel_cmd; use raisfast::config::app::AppConfig; @@ -77,6 +79,24 @@ enum Commands { #[command(subcommand)] action: ProxyAction, }, + /// Expose local port to the internet via tunnel + #[cfg(feature = "tunnel")] + Tunnel { + /// Local port to expose + local_port: u16, + /// Local host to forward (default: localhost) + #[arg(short = 'l', long, default_value = "localhost")] + local_host: String, + /// Address of the remote server (default: tunnel.raisfast.com) + #[arg(short, long)] + to: Option, + /// Optional port on the remote server to select + #[arg(short, long)] + port: Option, + /// Optional secret for authentication + #[arg(short, long)] + secret: Option, + }, } #[cfg(all(feature = "proxy", unix))] @@ -557,6 +577,24 @@ pub async fn run(cli: Cli, config: &AppConfig) -> anyhow::Result<()> { } } } + + #[cfg(feature = "tunnel")] + Some(Commands::Tunnel { + local_port, + local_host, + to, + port, + secret, + }) => { + tunnel_cmd::run( + local_port, + Some(&local_host), + to.as_deref(), + port, + secret.as_deref(), + ) + .await?; + } } Ok(()) diff --git a/src/cli/tunnel_cmd.rs b/src/cli/tunnel_cmd.rs new file mode 100644 index 00000000..ddb75970 --- /dev/null +++ b/src/cli/tunnel_cmd.rs @@ -0,0 +1,39 @@ +use anyhow::Result; + +const DEFAULT_SERVER: &str = "tunnel.raisfast.com"; + +pub async fn run( + local_port: u16, + local_host: Option<&str>, + server: Option<&str>, + port: Option, + secret: Option<&str>, +) -> Result<()> { + let server = server.unwrap_or(DEFAULT_SERVER); + let local_host = local_host.unwrap_or("localhost"); + + println!("Connecting to {}...", server); + + let client = bore_cli::client::Client::new( + local_host, + local_port, + server, + port.unwrap_or(0), + secret, + ) + .await?; + + let remote_port = client.remote_port(); + + println!(); + println!(" Tunnel established!"); + println!(" Public URL: http://{}:{}", server, remote_port); + println!(" Local: http://{}:{}", local_host, local_port); + println!(); + println!(" Press Ctrl+C to stop."); + println!(); + + client.listen().await?; + + Ok(()) +} diff --git a/src/dto.rs b/src/dto.rs index 0ce5395e..442ef23f 100644 --- a/src/dto.rs +++ b/src/dto.rs @@ -28,6 +28,7 @@ pub mod tag; pub mod tenant; pub mod user; pub mod user_address; +pub mod user_device_code; pub mod wallet; pub mod ws; @@ -61,6 +62,7 @@ pub use tag::*; pub use tenant::*; pub use user::*; pub use user_address::*; +pub use user_device_code::*; pub use wallet::*; pub use ws::*; diff --git a/src/dto/user_device_code.rs b/src/dto/user_device_code.rs new file mode 100644 index 00000000..f8c6507a --- /dev/null +++ b/src/dto/user_device_code.rs @@ -0,0 +1,35 @@ +use serde::{Deserialize, Serialize}; +#[cfg(feature = "export-types")] +use ts_rs::TS; +use utoipa::ToSchema; +use validator::Validate; + +#[cfg_attr(feature = "export-types", derive(TS))] +#[derive(Debug, Deserialize, Validate, ToSchema)] +pub struct CreateDeviceCodeRequest { + #[validate(length(min = 1))] + pub access_token: String, + #[validate(length(min = 1))] + pub refresh_token: String, +} + +#[cfg_attr(feature = "export-types", derive(TS))] +#[derive(Debug, Deserialize, Validate, ToSchema)] +pub struct ExchangeDeviceCodeRequest { + #[validate(length(min = 1))] + pub code: String, +} + +#[cfg_attr(feature = "export-types", derive(TS))] +#[derive(Debug, Serialize, ToSchema)] +pub struct DeviceCodeResponse { + pub code: String, +} + +#[cfg_attr(feature = "export-types", derive(TS))] +#[derive(Debug, Serialize, ToSchema)] +pub struct ExchangeDeviceCodeResponse { + pub access_token: String, + pub refresh_token: String, + pub user: crate::dto::UserResponse, +} diff --git a/src/handlers/auth.rs b/src/handlers/auth.rs index 0b8ea41a..73f882ef 100644 --- a/src/handlers/auth.rs +++ b/src/handlers/auth.rs @@ -7,16 +7,16 @@ use axum::Json; use axum::extract::State; use crate::dto::{ - AuthConfigResponse, BindEmailRequest, BindPhoneRequest, CredentialResponse, - ForgotPasswordRequest, LoginRequest, RefreshRequest, RegisterRequest, - ResendVerificationRequest, ResetPasswordRequest, SendSmsCodeRequest, SetPasswordRequest, - VerifyEmailRequest, VerifySmsRequest, + AuthConfigResponse, BindEmailRequest, BindPhoneRequest, CreateDeviceCodeRequest, + CredentialResponse, ExchangeDeviceCodeRequest, ForgotPasswordRequest, LoginRequest, + RefreshRequest, RegisterRequest, ResendVerificationRequest, ResetPasswordRequest, + SendSmsCodeRequest, SetPasswordRequest, VerifyEmailRequest, VerifySmsRequest, }; use crate::errors::app_error::AppResult; use crate::errors::response::ApiResponse; use crate::errors::validation; use crate::middleware::auth::AuthUser; -use crate::services::{auth, email_verification, password_reset, sms}; +use crate::services::{auth, email_verification, password_reset, sms, user_device_code}; use crate::types::snowflake_id::SnowflakeId; pub fn routes( @@ -168,6 +168,26 @@ pub fn routes( "system public", "auth" ); + let r = reg_route!( + r, + registry, + restful, + "/auth/user-device-codes", + post, + create_device_code, + "system public", + "auth" + ); + let r = reg_route!( + r, + registry, + restful, + "/auth/user-device-codes/exchange", + post, + exchange_device_code, + "system public", + "auth" + ); reg_route!( r, registry, @@ -437,3 +457,36 @@ pub async fn delete_credential( auth::delete_credential(&state.pool, &auth, SnowflakeId(id)).await?; Ok(ApiResponse::success(())) } + +/// Create a one-time device code for IDE authentication +pub async fn create_device_code( + auth: AuthUser, + State(state): State, + Json(req): Json, +) -> AppResult> { + auth.ensure_authenticated()?; + validation::validate(&req)?; + let uid = auth.ensure_snowflake_user_id()?; + let code = + user_device_code::create_device_code(&state.pool, uid, &req.access_token, &req.refresh_token) + .await?; + Ok(ApiResponse::success(crate::dto::DeviceCodeResponse { code })) +} + +/// Exchange a device code for authentication tokens +pub async fn exchange_device_code( + State(state): State, + Json(req): Json, +) -> AppResult> { + validation::validate(&req)?; + let resp = user_device_code::exchange_device_code( + &state.pool, + &req.code, + &state.config.jwt_secret, + state.config.jwt_access_expires, + state.config.jwt_refresh_expires, + None, + ) + .await?; + Ok(ApiResponse::success(resp)) +} diff --git a/src/models.rs b/src/models.rs index 1a5733e8..2c9cab59 100644 --- a/src/models.rs +++ b/src/models.rs @@ -54,6 +54,7 @@ pub mod tenant; pub mod user; pub mod user_address; pub mod user_credential; +pub mod user_device_code; pub mod wallet; pub mod wallet_outbox; pub mod wallet_transaction; diff --git a/src/models/user_device_code.rs b/src/models/user_device_code.rs new file mode 100644 index 00000000..7ae94ede --- /dev/null +++ b/src/models/user_device_code.rs @@ -0,0 +1,101 @@ +//! User device code model and database queries +//! +//! Defines the data structure for one-time authorization codes used by desktop +//! applications (IDE) to exchange for authentication tokens. + +use serde::{Deserialize, Serialize}; +use sqlx::FromRow; + +use crate::errors::app_error::AppResult; +use crate::types::snowflake_id::SnowflakeId; +use crate::utils::tz::Timestamp; + +#[derive(Debug, FromRow, Serialize, Deserialize)] +pub struct UserDeviceCode { + pub id: SnowflakeId, + pub user_id: SnowflakeId, + pub code: String, + pub access_token: String, + pub refresh_token: String, + pub expires_at: Timestamp, + pub used_at: Option, + pub created_at: Timestamp, +} + +pub async fn create( + pool: &crate::db::Pool, + user_id: SnowflakeId, + code: &str, + access_token: &str, + refresh_token: &str, + expires_at: &str, +) -> AppResult<()> { + let (id, now) = ( + crate::utils::id::new_snowflake_id(), + crate::utils::tz::now_utc(), + ); + raisfast_derive::crud_insert!(pool, "user_device_codes", [ + "id" => id, + "user_id" => user_id, + "code" => code, + "access_token" => access_token, + "refresh_token" => refresh_token, + "expires_at" => expires_at, + "created_at" => now + ])?; + Ok(()) +} + +pub async fn find_by_code( + pool: &crate::db::Pool, + code: &str, +) -> AppResult> { + let result: Option = + raisfast_derive::crud_find!(pool, "user_device_codes", UserDeviceCode, where: ("code", code))?; + Ok(result) +} + +pub async fn mark_used( + pool: &crate::db::Pool, + id: SnowflakeId, +) -> AppResult<()> { + let now = crate::utils::tz::now_utc(); + raisfast_derive::crud_update!(pool, "user_device_codes", + bind: ["used_at" => now], + where: ("id", id) + )?; + Ok(()) +} + +pub async fn delete_expired(pool: &crate::db::Pool) -> AppResult { + use crate::db::{DbDriver, Driver}; + let now = crate::utils::tz::now_utc(); + let sql = format!( + "DELETE FROM user_device_codes WHERE expires_at < {} AND used_at IS NULL", + Driver::ph(1), + ); + let result = sqlx::query(&sql).bind(now).execute(pool).await + .map_err(|e| crate::errors::app_error::AppError::Internal(anyhow::anyhow!("failed to delete expired device codes: {e}")))?; + Ok(result.rows_affected()) +} + +pub async fn tx_find_by_code( + tx: &mut crate::db::pool::DbConnection, + code: &str, +) -> AppResult> { + let result: Option = + raisfast_derive::crud_find!(&mut *tx, "user_device_codes", UserDeviceCode, where: ("code", code))?; + Ok(result) +} + +pub async fn tx_mark_used( + tx: &mut crate::db::pool::DbConnection, + id: SnowflakeId, +) -> AppResult<()> { + let now = crate::utils::tz::now_utc(); + raisfast_derive::crud_update!(&mut *tx, "user_device_codes", + bind: ["used_at" => now], + where: ("id", id) + )?; + Ok(()) +} diff --git a/src/services.rs b/src/services.rs index 50f4d36a..785afe17 100644 --- a/src/services.rs +++ b/src/services.rs @@ -37,6 +37,7 @@ pub mod tag; pub mod tenant; pub mod user; pub mod user_address; +pub mod user_device_code; pub mod wallet; #[cfg(feature = "export-types")] diff --git a/src/services/user_device_code.rs b/src/services/user_device_code.rs new file mode 100644 index 00000000..428835c9 --- /dev/null +++ b/src/services/user_device_code.rs @@ -0,0 +1,98 @@ +//! User device code service +//! +//! Handles creation and exchange of one-time authorization codes for desktop IDE authentication. + +use chrono::Utc; + +use crate::dto::{ExchangeDeviceCodeResponse, UserResponse}; +use crate::errors::app_error::{AppError, AppResult}; +use crate::services::auth; + +const DEVICE_CODE_EXPIRY_SECONDS: i64 = 120; + +pub async fn create_device_code( + pool: &crate::db::Pool, + user_id: crate::types::snowflake_id::SnowflakeId, + access_token: &str, + refresh_token: &str, +) -> AppResult { + let code = crate::utils::id::new_id().to_string(); + let expires_at = Utc::now() + chrono::Duration::seconds(DEVICE_CODE_EXPIRY_SECONDS); + + crate::models::user_device_code::create( + pool, + user_id, + &code, + access_token, + refresh_token, + &expires_at.to_rfc3339(), + ) + .await?; + + Ok(code) +} + +pub async fn exchange_device_code( + pool: &crate::db::Pool, + code: &str, + jwt_secret: &str, + jwt_access_expires: u64, + jwt_refresh_expires: u64, + tenant_id: Option<&str>, +) -> AppResult { + let stored = crate::models::user_device_code::find_by_code(pool, code) + .await? + .ok_or_else(|| AppError::BadRequest("invalid_device_code".into()))?; + + if stored.used_at.is_some() { + return Err(AppError::BadRequest("device_code_already_used".into())); + } + + let now = Utc::now(); + let expires_at: chrono::DateTime = stored + .expires_at + .to_string() + .parse() + .map_err(|_| AppError::Internal(anyhow::anyhow!("invalid expires_at format")))?; + if now > expires_at { + return Err(AppError::BadRequest("device_code_expired".into())); + } + + let user = crate::models::user::find_by_id(pool, stored.user_id, tenant_id) + .await? + .ok_or_else(|| AppError::Unauthorized)?; + + let new_refresh_token = crate::in_transaction!(pool, tx, { + crate::models::user_device_code::tx_mark_used(&mut tx, stored.id).await?; + + crate::models::refresh_token::tx_delete_by_user(&mut tx, user.id).await?; + + let rt = auth::generate_refresh_token_string_internal()?; + let new_expires_at = Utc::now() + chrono::Duration::seconds(jwt_refresh_expires as i64); + crate::models::refresh_token::tx_create_token( + &mut tx, + user.id, + &rt, + &new_expires_at.to_rfc3339(), + ) + .await?; + + Ok::<_, crate::errors::app_error::AppError>(rt) + })?; + + let new_access_token = auth::generate_access_token_internal( + user.id, + user.role, + user.tenant_id + .as_deref() + .unwrap_or(crate::constants::DEFAULT_TENANT), + jwt_secret, + jwt_access_expires, + )?; + + Ok(ExchangeDeviceCodeResponse { + access_token: new_access_token, + refresh_token: new_refresh_token, + user: UserResponse::from_user_with_contacts(pool, user).await?, + }) +}