Skip to content

New database - #472

Merged
Rigidity merged 365 commits into
mainfrom
new-database
Aug 1, 2025
Merged

New database#472
Rigidity merged 365 commits into
mainfrom
new-database

Conversation

@Rigidity

@Rigidity Rigidity commented Jun 21, 2025

Copy link
Copy Markdown
Collaborator

Followup things to do before release:

  • Ensure there is a warning for Revocable CATs and they can't be mixed with regular CATs of the same asset id
  • Fully test the UI
  • Write more integration tests for edge cases (especially with clawbacks and Revocable CATs)

@dkackman
dkackman requested a review from Copilot July 30, 2025 20:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a major database refactoring to implement a "new database" design for the Sage wallet, focusing on better organization of database operations, improved handling of CATs (Chia Asset Tokens), DIDs, NFTs, and introduces clawback functionality.

Key changes include:

  • Restructured database layer with modular table organization
  • Enhanced coin parsing with clawback support
  • Replaced old transaction tracking system with mempool items
  • New type-safe conversion utilities

Reviewed Changes

Copilot reviewed 73 out of 477 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
crates/sage-wallet/src/coin_kind.rs Updated CAT parsing to use new CatInfo structure and simplified return values
crates/sage-wallet/src/child_kind.rs Enhanced child coin parsing with clawback support, new parse_children method, and comprehensive custody tracking
crates/sage-wallet/Cargo.toml Added hex dependency and updated build configuration
crates/sage-database/src/utils.rs Replaced utility functions with trait-based type conversion system
crates/sage-database/src/transactions.rs Removed entire legacy transaction tracking implementation
crates/sage-database/src/tables/* New modular table implementations for transactions, p2_puzzles, offers, files, collections, coins, blocks, and assets
Files not reviewed (218)
  • .sqlx/query-05c5b5fb801065c07a336435c72c318e7cd5ccdfde04660ea9d8e4de00cbeafd.json: Language not supported
  • .sqlx/query-06597c3a99e3ac6448ef9ab5f46f7e80b9e84294af7b626712e4f13a7f23468b.json: Language not supported
  • .sqlx/query-06802a4efba6dc3e16e65769f739dd1506bb3ac5b040e71c70a6f929e6a49f44.json: Language not supported
  • .sqlx/query-08603dd734a2434722e2243d61a44577d5eb89f5d546db3b7f87b37bd420737d.json: Language not supported
  • .sqlx/query-09f846328374776c4980a0f6ca31b29fbce2044d7601c642c88a6da5b131e4af.json: Language not supported
  • .sqlx/query-0a154eb3d84e9224d7f88acde6a2ecfa0cb47a5977f9dd9434247117ebc7a3ca.json: Language not supported
  • .sqlx/query-0a55a34cdc4bd0cb4c0514ab938f061de3ceb1ac6b1c0dd4de92149ed2c4494a.json: Language not supported
  • .sqlx/query-0a9370ba52b140ceae15af6d25c3778baa8e5c4ce10fff5d90fa538895e1f2c0.json: Language not supported
  • .sqlx/query-0a9b0635b043ed3dd998a33fe214278ff59ddfdbc5fafd25a56b8e67115f1c51.json: Language not supported
  • .sqlx/query-0bd50a041814da8532dde48fd00f056204957e615443d30e0c1ede98af4e5519.json: Language not supported
  • .sqlx/query-0c294a9cc1e5b1c7bf72691d4824442f254e1be2089b3647bed117f4bd15cfe7.json: Language not supported
  • .sqlx/query-0e221ba6a44bdd687317f09e1003803d8c3e38cb0101e01af1ed59bd7f64e078.json: Language not supported
  • .sqlx/query-128ef3d7d903189eea35f141e1fa295f7116bbc3674f64a2ae680aef0fa33256.json: Language not supported
  • .sqlx/query-13a603417d0dfc31a1330a24b57b1a14ab95b9c159618255eaedcb249b39ee86.json: Language not supported
  • .sqlx/query-14658cf99ae1c0de7ee9ba9f20b2487215a1824d255f5a1bfcf1021ef4ad3bee.json: Language not supported
  • .sqlx/query-14a48914904875c2bad20f496d80c70a0a06fbfb8cc3b2b141ff266c3f8ce4d8.json: Language not supported
  • .sqlx/query-159906b7abba41809024015204615663b3b2f1c1c1682fe3e95f899bb4b1f7c2.json: Language not supported
  • .sqlx/query-159bba47079ec5a783aa08e73118c1f06a35e7bec0a1836ea2136ca999ac33d7.json: Language not supported
  • .sqlx/query-1697370a7e61f088e103f2d8e1977e9ac441d499a1557331b4e29ace0843c08f.json: Language not supported
  • .sqlx/query-16f87160e00064a9692f32cf5afa3bb56b2b9d44dddafba6bdbcdc24a40cfb6a.json: Language not supported
  • .sqlx/query-1703f687f284012d335632b7bb603ea1ba181bd81c918ad4868dae4b19bbcd69.json: Language not supported
  • .sqlx/query-18d3d050762544ca73050ff24bec4dddf34afffa9ab95e17eaebf2eac7cc1ca6.json: Language not supported
  • .sqlx/query-193aa911a0d0a4df1258102a595ba45a144f738dfc5896eb8db568d2f5794168.json: Language not supported
  • .sqlx/query-1e8f21fd0c35249917f77752d470d00c658c3951f52ca38d7d3cb68d0143265d.json: Language not supported
  • .sqlx/query-1f02b69aed85e466920cf1890d478d481723d70c83c4370f4c528a574a69e7eb.json: Language not supported
  • .sqlx/query-20382f9dec9385edf45692693fc58023d693b345002efdeb8ee9ba50a44e3f59.json: Language not supported
  • .sqlx/query-2038867d267903ab3730dee28abc3f09b6c88adda86af655522a11be2ce1e172.json: Language not supported
  • .sqlx/query-20505bc0166a86dc2be61d1ce71251533e25a0291ce0f05f4f68c70cb6daba94.json: Language not supported
  • .sqlx/query-211edf13476a2c9e6bfb5d3b026c03ce433aa3e425e0ca136766591d10497281.json: Language not supported
  • .sqlx/query-224faa271697d293d22786efb6651055fada3333fa015b66dc3c718c44260099.json: Language not supported
  • .sqlx/query-23a3a5e21db7039a455a7fae4ad0a5eb866a5176fb5df024ac8b0897f82d3008.json: Language not supported
  • .sqlx/query-23e500a57f9d0a19a1ffa1c1b5d34a7bcdcf5a8898ef749e735e406e64485971.json: Language not supported
  • .sqlx/query-23e9f0827989fb19576fb9bd37cd797f770c0126f4b0c9ee86c7c39a78529497.json: Language not supported
  • .sqlx/query-24ea4bd05a6542302f7baa5a41b78acde5237581748cdea39893cc4ae99b1998.json: Language not supported
  • .sqlx/query-25d3891073241eac0d0684d473dd7009126954db3031a15e30f44445364cd06e.json: Language not supported
  • .sqlx/query-26f35685c520800fcac9aa39af5eda01d241729c617dcefb200e4490bafb75ef.json: Language not supported
  • .sqlx/query-275b72aec6c3642621c64403265debc939d2d2e4c3fc788ce2a492eb5c2840d6.json: Language not supported
  • .sqlx/query-29948fd389ee08d87c21423ae16411721ec4b428a5b0739300f927b609e985d8.json: Language not supported
  • .sqlx/query-2b05eb244b5a2022c3b16cc13d1cb8a4bd59324eb1d37c4301dc7dda34a3159c.json: Language not supported
  • .sqlx/query-2b20bc5b625d46f0cf5b886b229fcf4caa0fa983bb207521dc91fc523c0eedb6.json: Language not supported
  • .sqlx/query-2b625086cd11f5ccf765d757e5c68c866f4e1fec9e27a805e384847a81019a0f.json: Language not supported
  • .sqlx/query-2b692c3f2917ae7bdf42da1abc2d309a00429c1eeede71b202673261f94a5dbd.json: Language not supported
  • .sqlx/query-2df1ebac13f87f697a9cdc5dee90f56c2bead83800519aaf6195a15d2333035a.json: Language not supported
  • .sqlx/query-2e39146351acfb22a8949733c22b4549dae27f804285e6b9108dd376d2fbc121.json: Language not supported
  • .sqlx/query-2eefe8bb34ccd11b98116fac075f15ea2b6fca53a1a4779a509fc6dcbc27150c.json: Language not supported
  • .sqlx/query-2fe66f59631c17cb77d35843bc7e866e1be06c7e4b6245eb7df8c47a7a13d6ed.json: Language not supported
  • .sqlx/query-30a898b6a469141ebdc0093536dd8003235153dcfba83e47d8b35a7888a0fc66.json: Language not supported
  • .sqlx/query-31e0c1b1f756ce4521d90dabfc47bce39420af9ddd6a47586ab2f521d1243600.json: Language not supported
  • .sqlx/query-322ec020e29d5523ca308fb0029d1e1633a66f50125404b90da98ac5bec89086.json: Language not supported
  • .sqlx/query-32da3c0d8d84766a57e4b992d4ff4767500966b7e5d13ec385dca0028e0cf7fa.json: Language not supported
  • .sqlx/query-34ac3069ef637b91e7bc06b1dc9b779cb34a573befc9027418d4791fa381375d.json: Language not supported
  • .sqlx/query-35e1d67c92d373325db671e3a21d7d102115afd0adbf2e8fb279f33556f95e9d.json: Language not supported
  • .sqlx/query-37bd891013a2e43f4daaf084b0b21f535e373a878e2a8acc8a15e17cf66e1dea.json: Language not supported
  • .sqlx/query-38e31984cf599af11b261493d8196aa6c9efc623610bdbc841b944588c10cf04.json: Language not supported
  • .sqlx/query-39484626066ffa2cb1e7c8822230c84736678f055ddde0cff9ddc14da32dc6b5.json: Language not supported
  • .sqlx/query-39eff83a71ed98f701821f0bfe822e78b097fdba91a5a409924a59c6ccbd3ffd.json: Language not supported
  • .sqlx/query-3a1c1141a639a8e7ac636507419d24137d7601848792f519766bbeb15557bbd6.json: Language not supported
  • .sqlx/query-3b048718fa92886636e58a225c03d29d0fc87f8187bf2c856aed6e324cebbc73.json: Language not supported
  • .sqlx/query-3b1eab15a2414f6edb8a5ea98a4e78f4145959c20b1854ce867af247a509327f.json: Language not supported
  • .sqlx/query-3b5262f9282bc0d5f4e87b77b5be79de3761b5b4f06c315bc2edc54beb3c18ba.json: Language not supported
  • .sqlx/query-3bca02de2bd877d0fa2c2e6ba91864012485c473a94ab84ae9066e63ed434db1.json: Language not supported
  • .sqlx/query-3f591f559e03b4d7d22b1e01c1c483fc35d4fe729876b067edd27998ece72224.json: Language not supported
  • .sqlx/query-40d3e4be9538adb02187817711c25d315b9fcfbdec5e06f07c41066ffe53c390.json: Language not supported
  • .sqlx/query-465942dc655535288a07def03b2fe68548d52c970900d409eee6076354100860.json: Language not supported
  • .sqlx/query-4b49177ead33e2c1ade773c28a84c10f05d690f615fa9d91b90329c86d8a38a5.json: Language not supported
  • .sqlx/query-4c0cfb85e8e561c95e73ff4f6dda3e1cf8b0ccb18ec02941b691e9917739a957.json: Language not supported
  • .sqlx/query-4d0c70f825bfd512daa0b520d2d4e1a99f5cd363ffaafd9b79306ad9e131f2ab.json: Language not supported
  • .sqlx/query-4e4f8169ea7bb563413fc740092fc0441bff904d4220a8030e95479624801027.json: Language not supported
  • .sqlx/query-4e57a9bc7318609e6c2b2fe3130f64350fe914edea4a35d21dbf77bd687c1eb4.json: Language not supported
  • .sqlx/query-4e6a3a14b63bb1332a0cee2996e753fda5ecd8877225a67e9ca4f3949f76f0a0.json: Language not supported
  • .sqlx/query-4f26a0e9ee97580232e4400f774443a5c94f5df0e530b5409cef42924d59efeb.json: Language not supported
  • .sqlx/query-4fc797762589a9e2e86965a8d92edd9110a65bfacd3008d28e0e9440b1f65301.json: Language not supported
  • .sqlx/query-4feca15039a86c86f18e0019ebe51cab01b0552f3465c4b80ec24280d8ed50ca.json: Language not supported
  • .sqlx/query-5023da5b532e946c8e7b13448d2ff5f92d068bce71e153eebacdaebfe310420b.json: Language not supported
  • .sqlx/query-50fe43ca73207560216f6fae3ff66d6f095eb6de376f80f3fc4b62b0156c7e8d.json: Language not supported
  • .sqlx/query-52c521c4bb43566e5af15059e685f26111fbef0d32183bb1fdce95805dea8d33.json: Language not supported
  • .sqlx/query-5450c0ea6d1ca91dd37dc923d7a281e0b341cdafe217832ba2ada0e67b1f3763.json: Language not supported
  • .sqlx/query-5456bae707e9ee2251330755fb8fd4531c0b509ec408c8b53a875b0bf9fbe77a.json: Language not supported
  • .sqlx/query-54bc4e8d02f738e808a018731322fc235b8b5b14e6243900d1673089f12c2507.json: Language not supported
  • .sqlx/query-54c36388c6dcf5df5dec2ed5ae90a85c1ef07a9b5db14d229f90f53425e2a20c.json: Language not supported
  • .sqlx/query-5529039170b9e0cae5729fe3251bbcc4944737ca8146a8bb3dcee695e1a232d4.json: Language not supported
  • .sqlx/query-56cf5d987d1c176bb5254b21c7d3ef5f293d117434fdf14fe6646afce74e77d8.json: Language not supported
  • .sqlx/query-579cf65be1ff023aca72dfcd60ebd3883e75bb092b4ac965411f24fa4a3b96d2.json: Language not supported
  • .sqlx/query-58a5fc4e0127de1f53d3071b1d7597ef0088d86a2fa00036dc8d8f0eefc5f156.json: Language not supported
  • .sqlx/query-593ff26761c8cc24690c2bfefdc08703daf515f8da64299a1f82df5e2ca609c4.json: Language not supported
  • .sqlx/query-59d61d8b1794878c7acbcc45c304b7943277fdf5f4263e5827a3b2b4255f468e.json: Language not supported
  • .sqlx/query-5e339e5d8783b0323d4fbb402826a14c2587b27426635e68942a5526a6a00b8c.json: Language not supported
  • .sqlx/query-5e37c04f21a27b0fc6d2f9601c3431b27088d9184f057d65ab3905f871f75f45.json: Language not supported
  • .sqlx/query-5e740e307bf332541fc073cf20f72297912073527728adb5afd1391300b8ed0c.json: Language not supported
  • .sqlx/query-61199b0c85bc47d5fc29e48ebba7c40918184d3103139bff1b821044ad5e9b1a.json: Language not supported
  • .sqlx/query-626c7058b74c08dc5bfc94db18620970a866e66db717b10713db63406e4bd9c7.json: Language not supported
  • .sqlx/query-640f343dc11301a349c1568532ef1de2004b9e5a9ab555499c6513579fedae49.json: Language not supported
  • .sqlx/query-64b3d98ba64e09e6a5c1b91dbea0a8de088736f910c7e6febb3884691323c6b0.json: Language not supported
  • .sqlx/query-6845c1ccfd21971b75aeed84b8b65ca9044f8c312bedeff84f7b43a7d8828ca6.json: Language not supported
  • .sqlx/query-6a12723fae419d966d1a0e4417a790a5123a579ac97bb287a6555499384e932d.json: Language not supported
  • .sqlx/query-6c9af1c832bcead88d180b884b4bf8301dff3615197f78ecbf238529030c5930.json: Language not supported
  • .sqlx/query-6d70a25c3dc7e5d3507a28d5394bb5041032fd39983269421d9884d43259314c.json: Language not supported
  • .sqlx/query-6dcfb331c63266208f3d1a06bc0641c70f6145fc77d12419f4bb495067d11081.json: Language not supported
  • .sqlx/query-6fe095fd12b12a8223963f2569f59940a39d9665aedafdfc781b277f1e43a1ec.json: Language not supported
  • .sqlx/query-702e92a8661b0fd07cbafcdc8a2cfb1d152538c17a2a0e9dff56e201a2d9942e.json: Language not supported
  • .sqlx/query-704b7ef0f010994311ed21c209a166f7ea91fd21969cf1b9e8d095c51b1cd675.json: Language not supported
  • .sqlx/query-70b797f774d0016a26c6d0668c75562ebdfec282146ec1759e53c5ed0986e3bc.json: Language not supported
  • .sqlx/query-76438520a51fa88577083a3afbb93c9228c8e9d3599ef18ac27b3eb21fe62493.json: Language not supported
  • .sqlx/query-788f82b77a246cd59bba8cdc782e0248aa00e3499f5ffa93153e2f6225d9117f.json: Language not supported
  • .sqlx/query-7ac44bd2934972682709ad97f7f01827988910b5ec9e7a0cab753c8f7d7fc0a9.json: Language not supported
  • .sqlx/query-7ec2a8e891186eceea5d05cacf13fa2645c556524114b07890411811ef6f375c.json: Language not supported
  • .sqlx/query-7f291cc0304d69ebe753b91062bbd11db4ffb5c5d324827eeeb5c44672ca026e.json: Language not supported
  • .sqlx/query-7f341318dbd63334655c356333fa47b7c306c976123a75f31c4c23995965f831.json: Language not supported
  • .sqlx/query-808635aff0ab3dd13109fec8dbac511d2f781525bfa22dd83617e512e0c0efbb.json: Language not supported
  • .sqlx/query-841d52810f68a85ca772db7473d7b07985fd3bf90c21ebcfd7c5b38ffe9c40d4.json: Language not supported
  • .sqlx/query-85d053be5e0669dab3ffa1095e0803208a5bb3d177e8f0dc0b881f84d42352e7.json: Language not supported
  • .sqlx/query-8866e82acf4f306390b1d14487cc484f5ad0eeb7393dce5d381bd71b816b6755.json: Language not supported
  • .sqlx/query-8a728911b3877476b9649f890645c5b658d377a98d7c6fe8952fd6c9f7da6d84.json: Language not supported
  • .sqlx/query-8ad96df6ec8bead1764dfb3e85f28c608fe60cddcfbfe56566b631763ac7bae5.json: Language not supported
  • .sqlx/query-8bce2a4bbc98b2933ed8b4a3b2ccc3f3ea556b608b54d0d9d15dcf181790eb97.json: Language not supported
  • .sqlx/query-8de75687cbcc5a104842a41125f3b162e86507480a3cab534b61c3e0a567b0ce.json: Language not supported
  • .sqlx/query-8ed50206e026ccd548134de70e7cdeb02e95f99befdc94c3db861c86d0a2827e.json: Language not supported
  • .sqlx/query-8fb0ac19831a14e60813bc15679b32f97cc0cf9ff9ecc0a7adb60017831c8aa8.json: Language not supported
  • .sqlx/query-8fb8faa14e3dfa97450e43260dbe0affdba56a986c679149f8a85de0b45617a8.json: Language not supported
  • .sqlx/query-91054392bb590bd729d257989bee20e41f5e7b40a1434df439f0ccca126ee8ac.json: Language not supported
  • .sqlx/query-91850dd89cc1da00047085e61ebcd989e1818612bc6abb6b7c3b7eaa9b179c30.json: Language not supported
  • .sqlx/query-9420892e33dedae25072fe284eb469e14ab37adfb836483468f8a8db54b7fdcf.json: Language not supported
  • .sqlx/query-94923631955b98f8477aeaaf7bfe3aad3a1a0eb1ec11398de43fe7d044c8ade8.json: Language not supported
  • .sqlx/query-955b4fba4689c0ae0a5eb46631fdc38ed92ac74d690c3f5a70a1fb94d9164a89.json: Language not supported
  • .sqlx/query-95c52dca8c20bd82bbd640d503b68e6c9138772b9e1e8fff953a42e78de0269c.json: Language not supported
  • .sqlx/query-9738b036011c30ae2d1417ba38476c60e55e3debc90ea7205d08f182865aa980.json: Language not supported
  • .sqlx/query-9919b58097851e0ba213cddd61673d78156251d9ee5475f1fab50696139c4997.json: Language not supported
  • .sqlx/query-99ccce96cc2ec334724a1ff115c4f09114d37e70b84c3c1b2277c58ffe01adfc.json: Language not supported
  • .sqlx/query-99f82770337e8817fc98076f2c7a942f70b2c808b990078a0afedb589da24298.json: Language not supported
  • .sqlx/query-9b3f53942d2d4bd8c4cb9100949e39d85edd1c4bdf1f6a741eff11ded22b278c.json: Language not supported
  • .sqlx/query-9e27bdf8912eeac4222a9575bb1fb0e54790aa895bd7fc96c598cc5876318227.json: Language not supported
  • .sqlx/query-a19602191b734f77355f83d6ba469251e360f743ad338cf36706d1689d74c5b4.json: Language not supported
  • .sqlx/query-a1ac83ba7dc421cba36a2d0cc869473821733ddc2d5322277d80ab52a751e52b.json: Language not supported
  • .sqlx/query-a1dcbfe54b8cbdfd3b8760ca225c168eb04d423fccd6d0e3d408d0dc733fab34.json: Language not supported
  • .sqlx/query-a21166c21fa64a3bc44aeda9035c5759059d5543076eb901bd2ae443d9c89f3a.json: Language not supported
  • .sqlx/query-a27a932fd61aff027c2416fa86fd625bf7ce1a7ab5d0bf254df504b8708893c9.json: Language not supported
  • .sqlx/query-a3d7c6b12d4f2cad5b702b8500f140d5c3ca584b8f98fd84c87fba58a37d262f.json: Language not supported
  • .sqlx/query-a491d525db244a1d652c603b177ab5a798f65477480750946ae6b982bac32ddc.json: Language not supported
  • .sqlx/query-a5f50b4a6c72d804c5fb0139b5d804e8f59f2e47bde3dafdd78d72a0987f41a7.json: Language not supported
  • .sqlx/query-a6444ee76ed09f8c46d1821464cb62da0dde34ac13fa28689390facd204797e4.json: Language not supported
  • .sqlx/query-a78a4e79afa33d57fcf510dcf1528aee25a61e365661d01cce8971d6ec0c0b1a.json: Language not supported
  • .sqlx/query-a8933f2249fc03a445cee68022c63cda2de23f9edf88ccdefd684f56ee3618a2.json: Language not supported
  • .sqlx/query-a93526d49ab50f772b1c359d3ab88ef45570143ed28f265d76c6e17efdd12dce.json: Language not supported
  • .sqlx/query-a9820412ca803927e7d195db8d1f90ce25c5a99870e6a3a248cb1cecd912cd23.json: Language not supported
  • .sqlx/query-aa8b2a615b069bd89079afcceb9484344c8731f7f767a9aa949c1356d99cd81a.json: Language not supported
  • .sqlx/query-ac56599044f381115785e659ed4a52d74dc2502e7d3f73539b805bc77f38604a.json: Language not supported
  • .sqlx/query-ad3a8a8993fc1a1b69c943cd91c030fe372bef663d75c9236a28f2fe887de9cb.json: Language not supported
  • .sqlx/query-ae598e995df3798384fe694f71e74e71d870b29c258bed2653f182f46b26728b.json: Language not supported
  • .sqlx/query-ae767c36d341dac05bcc53e3bbae85358661c8c3c8c285074d1bbee18e3f8250.json: Language not supported
  • .sqlx/query-b1107c7179c86c248b75414ee0bbb457126896eedd6ebd925203c4b6df464976.json: Language not supported
  • .sqlx/query-b149fb8c13040be35c66ad83a26ff681cb0482e08e99b214d199a36a2c570859.json: Language not supported
  • .sqlx/query-baf4a9108bf169fcbfa69969a4dc9b94265f7d71abd1646ce839e8e7941a2a90.json: Language not supported
  • .sqlx/query-bcd575c48884cbc133f407af02fb963d47a8ef0326e3dbb5dc8ab5654d1f392c.json: Language not supported
  • .sqlx/query-bd1062f80c3996fbb1266e4cec6a6c2f5067f48f3754535d97c68cc04bdf7a66.json: Language not supported
  • .sqlx/query-bde44fb0ed16ae37308d0a454108753a91fc8cc8007eaff6344be30fdf885f53.json: Language not supported
  • .sqlx/query-be2448253ba62dbb2b57d24f7347ba0924b3015a31108cfc8d4a9c3d494c192c.json: Language not supported
  • .sqlx/query-be4915e1e47971f74f9972e4b78fc645cb9cfc8d6d14d817ff09738b78f38524.json: Language not supported
  • .sqlx/query-bf1c1fbda216a00dd500e18326e6f487962c16e0125e780815105b6ab5480dc1.json: Language not supported
  • .sqlx/query-c1b2ac8d018904a93e9e3c717e1a571fcda87b07c43416e757f5f3387a948c2c.json: Language not supported
  • .sqlx/query-c267b6101039aff3465ac3ba7ded9a01404be4cb5781d74091bf022196cd2fad.json: Language not supported
  • .sqlx/query-c28c5534fa54f929c81d02b31276dfb5d621da40c7adc621a055e9b72d4dae30.json: Language not supported
  • .sqlx/query-c3eda0483d42cf1dc0ab7ea0fc8712469e66b6c4f7661f81c44c278d8ef48841.json: Language not supported
  • .sqlx/query-c4989f8841631ca517d19ae6db282124662a0368439e4ae25e55256f5ea102c7.json: Language not supported
  • .sqlx/query-c4a5ecd631de42f851bf90100d8f62de5b0181d60dda8670065ad8702ba13aba.json: Language not supported
  • .sqlx/query-c5b1a7d051635ceafd46e18402b2016854de70dbeca4699fcc09621a906a7ca5.json: Language not supported
  • .sqlx/query-c705ffec23bfb844c9b1032ae37d10f84bb89461e4acbeaadde7230943b2576b.json: Language not supported
  • .sqlx/query-c7e2c303ecfe666535e9a21e0d8e64103d4fe702e201c61ba2c5d5453fb8843c.json: Language not supported
  • .sqlx/query-cb02cbe48e987386cd8649aee5aa08df514de8a8daf033c81fdd5c3e2ca1eaad.json: Language not supported
  • .sqlx/query-cb3a74b912417fef1b29f55002d74edc7c55bb39fc5169c252d92bdc57f5a3af.json: Language not supported
  • .sqlx/query-cc24879f9012f1e056cc0fcfc664437aee6a72b858918c0ca70776ef36b50f33.json: Language not supported
  • .sqlx/query-ccbfe5e0271b73c8b567954de158e91a6ff7e1c71a035d7aeb1a4ce1aa634c85.json: Language not supported
  • .sqlx/query-ccdbb66c8c90b0117b5919a92c2785d7570b967a9a3a266163809a241308415d.json: Language not supported
  • .sqlx/query-ce2df892fe8381ec398f0b97741d36faf3c00c70aae47ec3818462e29a4e400a.json: Language not supported
  • .sqlx/query-d00ab63cf624ef6b712c93e3a30442776c696ad3da620627fd2db2e05d6ade3a.json: Language not supported
  • .sqlx/query-d033d94daf4703a65deb9d902aa3014828efe2982d8631aabcaf2508a345216c.json: Language not supported
  • .sqlx/query-d2defd73743b149b96d3e5e9597f433128d7f5144e30c4b5371e0a87dd5caabf.json: Language not supported
  • .sqlx/query-d42c88a6e6ae43215089b798e6c021e03bf58c55439f7e3bead0d8aa3db18863.json: Language not supported
  • .sqlx/query-d5d05aafad60309b27bb7e7ac9392b8c2e486aa26262d82f2c0ce89fdd19d70b.json: Language not supported
  • .sqlx/query-d86c5743b146391f9b25f296a3af9a2f98a130cbe20e61c1f8cb9a139ff5c50f.json: Language not supported
  • .sqlx/query-d926e2a511801d06b405d089f13a98ca589afbfcef98fc5092a1a02a415f9b5e.json: Language not supported
  • .sqlx/query-d95629546bac213f319bd7e980e5a56a48319b94d7a9e42ede505d43131254cc.json: Language not supported
  • .sqlx/query-da4555012028d63d9d53a85c6247f0cc8eefbd24c6091ec6d465f52da3490202.json: Language not supported
  • .sqlx/query-dbfe6794b0d552111c01cec93995a4af753cbee36b430767e372debb5df15ce4.json: Language not supported
  • .sqlx/query-dc4778a9fdbb7a4071b925a01335de0fd08a55a97c5148f3d1252321256b0523.json: Language not supported
  • .sqlx/query-ddb15714a57d0084e6766e94b28c9090812dc6ba093d364b0732bc2f8e348e83.json: Language not supported
  • .sqlx/query-ddb6fea0a5725460382c09bf61fff370567e194f16fe55aae3059a98bccd28e3.json: Language not supported
  • .sqlx/query-dddf21489fd32fffe7e171910cff66e1976e161cc9b1ab44ca5750d7b8c5417b.json: Language not supported
  • .sqlx/query-ddf44629ce05d5213fe3f52eefb8b1fd0a2381d32c09a37c3452bde4f6bb356c.json: Language not supported
  • .sqlx/query-de862ad2cabdbe2ed6fdaebe3fb098a44978337234c1cac92179994c8a9c6eac.json: Language not supported
  • .sqlx/query-e0db9e9d4087d424a9ac831f673f622bd569b117ba045f65e3afe29dc95cb82c.json: Language not supported
  • .sqlx/query-e1481c4bccf1c591b7fa197681b9f7be06025ed7ca20f970452f9fd2697a8211.json: Language not supported
  • .sqlx/query-e28bd12b98847231ff06752e774231aeab735f91414c33de4158f2701f25e9f8.json: Language not supported
  • .sqlx/query-e4e9561996f931ad5703c9434632218a11e9df3f9f3a5711001c95aee4c75e92.json: Language not supported
  • .sqlx/query-e531b06fc1144b65d9c3821b89d8ec5a95a7e12c74636270d37e45afd9c96f32.json: Language not supported
  • .sqlx/query-e575ae62f524a270ef62da4ace6b8e3275484860cdc8e70ccd97b13061230f9e.json: Language not supported
  • .sqlx/query-e843f99da6d06b1fe07877738eb675eadcec252bcba9b251bd027d59f2e68d32.json: Language not supported
  • .sqlx/query-e86f3625c0d3bfdf62bd013edbbd9c105fcb1f044387bed9e5b03a52a84799c4.json: Language not supported
  • .sqlx/query-e87cae330e1ce739c1ddf2cdbf3b5537719edeec73b4d9b10f85b913cff8a03a.json: Language not supported
  • .sqlx/query-e96b53e779b2d30afa02196660857ad5c80de5badf8b2a7b9facfcdad82b6fe8.json: Language not supported
  • .sqlx/query-e97c3dfaebb0e1340cf2b2b23c7aab1797964dab93a7c5e7091a18859c0a942f.json: Language not supported
  • .sqlx/query-e985be1270a2c2433ff175aab6577290676f135dc341a2ed41cd71400db41d73.json: Language not supported
  • .sqlx/query-ea4bb56089373de61b9d5e4f7865c1090b0f684567d1e4de391373d3b36faa9d.json: Language not supported
  • .sqlx/query-ecdabf3ddfb2b9e7ddaee36c57cee4818b113faad1fa6169e486a7a1bc1be4da.json: Language not supported
  • .sqlx/query-ee307ddbdd1ededf7d89140b631763945ae6ce871d40d7c6f627379ea7c80e14.json: Language not supported
  • .sqlx/query-eee8bbee035366aafb313becb3cb5442cf24b1b9497d0929691dbf93386c12d4.json: Language not supported
  • .sqlx/query-f15d7d6399b9895af9c5a74a45a38d0d40b721a1632ab17dc958dcc9eedb4446.json: Language not supported
  • .sqlx/query-f173bb7b26be9126db98852ac84e71d1aaf7d8296902694390c9cfd6d2376807.json: Language not supported
  • .sqlx/query-f2be1dbffa92a251025e98deb70406bf2981db4c0196b5acb0b766995bea4484.json: Language not supported
  • .sqlx/query-f2e5255b96347dccb31a5997ad7ea69f8629756d2c74270c76bd0fc85f2e939f.json: Language not supported
  • .sqlx/query-f7245203c71cdf192fc3334935d25d871270bb9e7da09948231b6dc61703da18.json: Language not supported
  • .sqlx/query-f78c569713a5c185a26f6e154881dd2b970bc97c12285e92f638916f3f7270bb.json: Language not supported
  • .sqlx/query-f8603a648f790812c2963330ec461b03e3bbc0055ac53cd966bdcdb51ba8f511.json: Language not supported
  • .sqlx/query-f9151afa46f2b2ec5992cacf048b4844b1ae212a59a29ff33e4399a5556221dc.json: Language not supported
  • .sqlx/query-f9a67288d0213f38b4f37c5d13c8588bb1dd679252837a33778367ed24da1129.json: Language not supported
  • .sqlx/query-fe6b2ff2c4a327f5363b9c48e0520cce4cfe92743dd761188dc236c044606b18.json: Language not supported
  • .sqlx/query-fe6fa6692a17c1f93c883c4ededcf7235705166af82c6b5d5ea8863f9a3846d4.json: Language not supported
  • .sqlx/query-ffeb193a66da6b7d218b6e21353dcf3854a56af2ae3bb1d31a5334db682b7471.json: Language not supported
  • .sqlx/query-fffa560e5861900542cef64dbe9be940485eea480762caf4e602732f9c5bfc73.json: Language not supported
Comments suppressed due to low confidence (1)

crates/sage-database/src/tables/transactions.rs:206

  • Function name is_valid_asset_id is ambiguous - it only checks if the string is 64 hex characters, not if it's a valid asset ID on the blockchain. Consider renaming to is_hex_asset_id_format or similar.
pub fn is_valid_asset_id(asset_id: &str) -> bool {

Comment thread crates/sage-wallet/src/child_kind.rs
Comment thread crates/sage-wallet/src/child_kind.rs
Comment thread crates/sage-wallet/src/child_kind.rs
Comment thread crates/sage-wallet/src/child_kind.rs

Ok(row
.derivation_index
.map_or(0, |idx| idx.try_into().unwrap_or(0)))

Copilot AI Jul 30, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using unwrap_or(0) on a conversion that could fail silently masks potential data corruption. If the database contains invalid data, this will return 0 instead of propagating the error.

Suggested change
.map_or(0, |idx| idx.try_into().unwrap_or(0)))
.map(|idx| idx.try_into()).transpose()?.unwrap_or(0))

Copilot uses AI. Check for mistakes.
Comment thread crates/sage-database/src/tables/coins.rs
@Rigidity
Rigidity marked this pull request as ready for review August 1, 2025 20:40
@Rigidity
Rigidity merged commit e879ffb into main Aug 1, 2025
0 of 8 checks passed
@Rigidity
Rigidity deleted the new-database branch August 1, 2025 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants