Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
1c3dd91
chore(deps-dev): bump @types/react-dom in /dashboard
dependabot[bot] Jun 17, 2026
4cc37dd
chore(deps): bump framer-motion from 11.18.2 to 12.40.0 in /dashboard
dependabot[bot] Jun 17, 2026
4aaa7d0
chore(deps): bump tailwind-merge from 2.6.1 to 3.6.0 in /dashboard
dependabot[bot] Jun 17, 2026
718701f
chore(deps-dev): bump tailwindcss from 3.4.19 to 4.3.1 in /dashboard
dependabot[bot] Jun 17, 2026
4d5c7eb
feat(backend-sep24): [sep-24] add callback verification for interacti…
tali-creator Jun 25, 2026
6e203fe
feat(backend-sep12): [SEP-12] Implement webhook dispatch on KYC statu…
GideonBature Jun 26, 2026
b81b384
feat(backend-sep38): [sep-38] update quotes cache expiration rules (c…
GideonBature Jun 26, 2026
e8a870f
feat(backend-sep24): [sep-24] log detailed interaction metrics to pro…
GideonBature Jun 26, 2026
624d078
feat(dashboard): [dashboard] create user avatar dropdown menu in navb…
amankoli09 Jun 26, 2026
7cad768
[Dashboard] Display Detailed KYC Rejection Reasons in Panel
G-ELM Jun 26, 2026
6135695
feat(backend-sep12): implement GCS storage, upload record schema, mim…
vic-Gray Jun 26, 2026
d42a0d5
Merge branch 'main' into feature/issue-545-547-550-541-sep12-gcs-stor…
vic-Gray Jun 26, 2026
14f40a9
[Dashboard] Implement Interactive Charts for Transaction Volumes
G-ELM Jun 26, 2026
828ce76
feat: KYC upload progress, swap fuzz tests, random_gen storage limits…
king-aj-the-first Jun 27, 2026
7884573
chore: merge origin/main and resolve conflicts in App.tsx
amankoli09 Jun 27, 2026
2bc170d
feat(sep12): implement StorageProvider interface, S3 implementation, …
teslims2 Jun 27, 2026
c039604
Merge branch 'main' into feat/sep12-storage-provider-upload-url
teslims2 Jun 27, 2026
9f68020
feat(dashboard): [dashboard] standardize form validation in sep-24 in…
tecmalik Jun 27, 2026
6d1aa41
feat: optimize registry serialization and sep12 upload flow
success-OG Jun 27, 2026
0d45459
feat(registry): add unit tests for registry contract lookup caching c…
quickweb-stack Jun 27, 2026
0a872d0
feat(backend-tests): [sep-12] write e2e tests for pre-signed url uplo…
heymide Jun 27, 2026
bbe7a3d
feat(dashboard): [dashboard] build settings panel for updating webhoo…
heymide Jun 27, 2026
6e59f9f
feat: implement StorageProvider with metadata HEAD requests to verify…
Olamidepy Jun 27, 2026
f45f3a6
merge: resolve merge conflicts with upstream/main
Olamidepy Jun 27, 2026
f40f2ad
fix: resolve compile and type issues after merging upstream/main
Olamidepy Jun 27, 2026
74c3426
feat(staking-contract): implement emergency withdrawal in staking con…
quickweb-stack Jun 27, 2026
14ee1f4
test: add unit tests for storage-provider.service to meet coverage th…
Olamidepy Jun 27, 2026
ae118ce
feat(backend): add health check endpoint to backend express server (c…
Olamidepy Jun 27, 2026
1ccd514
test(backend): add storage-provider and upload-store tests to ensure …
Olamidepy Jun 27, 2026
b9906c2
feat(devops-docker): configure docker compose for production deployme…
Olamidepy Jun 27, 2026
3921413
feat(devops-ci): configure automated cleanup of test artifacts in ci …
Olamidepy Jun 27, 2026
654c0b2
fix(dashboard): remove unused AdminControls import and restore backen…
Olamidepy Jun 27, 2026
6f4237f
fix(dashboard-ci): use force click to bypass Webkit actionability che…
Olamidepy Jun 27, 2026
2e1c7cc
feat: scope smart contract CI to contracts/** paths with build and fo…
10xwhoman Jun 24, 2026
9200a2c
feat(registry): check for zero address validation in registry set (cl…
supreme2580 Jun 27, 2026
684db6b
feat: resolve issues #542 #554 #563 #569 (closes #542, closes #554, c…
Damola09 Jun 27, 2026
4450b8e
fix: resolve merge conflicts with upstream/main
Damola09 Jun 27, 2026
ed99dba
feat(xlm-wrapper): add test coverage for token allowance decreases (c…
MissBlue00 Jun 27, 2026
19fb121
feat: resolve issues #542 #554 #563 #569
Chidimj Jun 27, 2026
b25853c
feat: SEP-12 storage keys, yield pause guard, anchorpoint admin tests…
amanosiadnan-cmyk Jun 27, 2026
2ebd35c
feat: resolve issues 517, 522, 527, 530
Jun 28, 2026
4de1970
fix: Standardize error messages in liquid staking, closes #524
Jun 28, 2026
a54b5e8
Merge pull request #690 from serverlessdomain-hash/feature/resolve-al…
Ceejaytech25 Jun 28, 2026
35be0d9
fix: Resolve multiple issues
Jun 28, 2026
bb522fd
feat: STORAGE_PROVIDER:
ONEONUORA Jun 28, 2026
32ff601
Merge branch 'main' into STORAGE_PROVIDER
ONEONUORA Jun 28, 2026
8a39b7b
Merge pull request #697 from ONEONUORA/STORAGE_PROVIDER
Ceejaytech25 Jun 28, 2026
eeb6c25
feat(registry): add missing require_auth validation in registry contr…
EDOHWARES Jun 28, 2026
0b5e850
Merge pull request #698 from Ndanusa/feature/issue-525-528-registry-y…
Ceejaytech25 Jun 28, 2026
f982229
feat(xlm-wrapper): resolve xlm wrapper symbol_short! character limit …
Jun 29, 2026
497c252
feat(backend-relayer): improve error logging in relayer transaction s…
Jun 29, 2026
07b287c
feat(backend-tests): write unit tests for backend transaction-queue w…
Jun 29, 2026
7179274
Merge branch 'main' into feature/issue-576-implement-emergency-withdr…
quickweb-stack Jun 29, 2026
cac2320
Merge branch 'main' into feature/issue-581-check-for-zero-address-val…
supreme2580 Jun 29, 2026
781b198
Merge branch 'main' into feature/issue-542-563-554-569-multi-fix
Ceejaytech25 Jun 29, 2026
b4b1f69
Merge pull request #685 from Damola09/feature/issue-542-563-554-569-m…
Ceejaytech25 Jun 29, 2026
cc37a85
Merge branch 'main' into feature/issue-542-554-563-569-multi-fix
Ceejaytech25 Jun 29, 2026
69c505b
Merge pull request #687 from Chidimj/feature/issue-542-554-563-569-mu…
Ceejaytech25 Jun 29, 2026
f62687d
Merge pull request #696 from wowamaxe-glitch/fix/resolve-all-issues
Ceejaytech25 Jun 29, 2026
b9440f0
Merge pull request #700 from software321dev/feature/fix-all-issues
Ceejaytech25 Jun 29, 2026
6d31cdf
Merge branch 'ceejaylaboratory:main' into feature/issue-586-dashboard…
tecmalik Jun 29, 2026
010572f
feat(backend-sep24): add security validation for sep-24 callback urls…
raphael-01-visual Jun 29, 2026
6f88fe9
Merge pull request #702 from raphael-01-visual/feature/issue-536-add-…
Ceejaytech25 Jun 30, 2026
72d7004
Merge pull request #667 from vic-Gray/feature/issue-545-547-550-541-s…
Ceejaytech25 Jun 30, 2026
be66e4d
Merge branch 'main' into update-quotes-cache
GideonBature Jun 30, 2026
4c42721
Merge branch 'main' into prometheus
GideonBature Jun 30, 2026
07dbb8e
feat(backend-sep12): [sep-12] support customer deletion requests (clo…
GideonBature Jun 24, 2026
0c9f752
ci: fix backend migration verification
GideonBature Jun 24, 2026
3cb5a35
ci: fix audit and empty drift checks
GideonBature Jun 25, 2026
cc324ec
Merge branch 'main' into feature/issue-579-add-test-coverage-for-toke…
MissBlue00 Jun 30, 2026
fbd2954
fix: remove shadowed total_deposited in property_multi_user_supply_co…
MissBlue00 Jun 30, 2026
d380c08
Merge branch 'ceejaylaboratory:main' into feature/issue-586-dashboard…
tecmalik Jul 3, 2026
0843790
Merge branch 'main' into feature/issue-576-implement-emergency-withdr…
quickweb-stack Jul 3, 2026
ad89a08
Merge branch 'main' into feature/issue-609-sep-24-add-callback-verifi…
tali-creator Jul 3, 2026
a70080f
Merge pull request #511
Ceejaytech25 Jul 4, 2026
8a1be61
Merge pull request #512
Ceejaytech25 Jul 4, 2026
ad55b57
Merge pull request #650
Ceejaytech25 Jul 4, 2026
b8f0a16
Merge pull request #651
Ceejaytech25 Jul 4, 2026
340b9e7
Merge pull request #657
Ceejaytech25 Jul 4, 2026
60d3a12
Merge pull request #663
Ceejaytech25 Jul 4, 2026
0e3256f
Merge branch 'origin/main' into pr-664 (resolve conflicts)
Ceejaytech25 Jul 4, 2026
e9e5e26
Merge branch 'origin/main' into pr-508 (resolve conflicts)
Ceejaytech25 Jul 4, 2026
e49ac3f
build(deps): bump react from 18.3.1 to 19.2.7 in /dashboard
dependabot[bot] Jul 4, 2026
e02be0c
build(deps-dev): bump @types/react-dom in /dashboard
dependabot[bot] Jul 4, 2026
33e25fd
Merge pull request #508
Ceejaytech25 Jul 4, 2026
95d1d92
Merge pull request #509
Ceejaytech25 Jul 4, 2026
1378368
Merge pull request #510
Ceejaytech25 Jul 4, 2026
53d8895
Merge pull request #665
Ceejaytech25 Jul 4, 2026
10b9715
Merge pull request #666
Ceejaytech25 Jul 4, 2026
b556b89
Merge branch 'origin/main' into pr-668 (resolve conflicts)
Ceejaytech25 Jul 4, 2026
977bab4
Merge branch 'origin/main' into pr-671 (resolve conflicts)
Ceejaytech25 Jul 4, 2026
7b9eef4
Merge pull request #673
Ceejaytech25 Jul 4, 2026
8866ac1
Merge pull request #674
Ceejaytech25 Jul 4, 2026
5db2c53
Merge branch 'origin/main' into pr-675 (resolve conflicts)
Ceejaytech25 Jul 4, 2026
717e840
Merge branch 'main' into pr-676
Ceejaytech25 Jul 4, 2026
42f8911
Merge branch 'main' into pr-677
Ceejaytech25 Jul 4, 2026
3f78b48
Fix merge conflicts and type issues on sep24.route.ts and sep12.contr…
Ceejaytech25 Jul 4, 2026
13c61a7
Merge branch 'main' into pr-678
Ceejaytech25 Jul 4, 2026
6fe9ceb
Resolve conflicts for PR 679
Ceejaytech25 Jul 4, 2026
1500a46
Merge branch 'main' into pr-680
Ceejaytech25 Jul 4, 2026
2e098f1
Merge main into pr-681 and resolve conflicts
Ceejaytech25 Jul 4, 2026
1c24f91
Merge pull request #682
Ceejaytech25 Jul 4, 2026
7a8623d
Merge main into pr-683 and resolve conflicts
Ceejaytech25 Jul 4, 2026
2ea8572
Merge pull request #683
Ceejaytech25 Jul 4, 2026
6aad6d7
Merge pull request #684
Ceejaytech25 Jul 4, 2026
de39533
Merge pull request #686
Ceejaytech25 Jul 4, 2026
bd9e5c6
Merge branch 'main' into pr-688 resolving conflicts
Ceejaytech25 Jul 4, 2026
79ac80e
Merge pull request #688
Ceejaytech25 Jul 4, 2026
2861078
Merge branch 'main' into pr-692 resolving conflicts
Ceejaytech25 Jul 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,7 @@ jobs:
env:
DATABASE_URL: "file:./test.db"
run: npm test

- name: Cleanup test artifacts
if: always()
run: rm -rf coverage logs test.db* migration-status.md
4 changes: 4 additions & 0 deletions .github/workflows/dashboard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,7 @@ jobs:

- name: Run browser smoke test
run: npm run test:browser -w dashboard -- --project=${{ matrix.browser }}

- name: Cleanup test artifacts
if: always()
run: rm -rf dashboard/test-results
4 changes: 4 additions & 0 deletions .github/workflows/migration-integrity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,10 @@ jobs:
core.warning(`Unable to comment migration report on PR: ${error.message}`);
}

- name: Cleanup test artifacts
if: always()
run: rm -f backend/migrate-status.txt backend/migration-report.md

staging-migration-test:
name: Test Migration on Staging Clone
runs-on: ubuntu-latest
Expand Down
24 changes: 22 additions & 2 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,42 @@ on:
- "scripts/security-audit.sh"

jobs:
test:
build:
name: Build and test smart contracts
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown,wasm32v1-none
components: rustfmt, clippy

- uses: Swatinem/rust-cache@v2

- name: Check formatting
run: cargo fmt --all --check

- name: Clippy
run: cargo clippy --all-targets --all-features -- -D warnings

- name: Build (wasm32)
run: cargo build --target wasm32-unknown-unknown --release

- uses: taiki-e/install-action@v2
with:
tool: cargo-scout-audit@0.3.16

- name: Install Scout system dependencies
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config gcc

- name: Test sep41-token
run: cargo test -p sep41-token

- name: Test upgradeable
run: cargo test -p upgradeable

- name: Run Security Audit
run: ./scripts/security-audit.sh --warn-only
1 change: 1 addition & 0 deletions Untitled
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
git config user.email "tawfiqamuhammad@gmail.com"
7 changes: 7 additions & 0 deletions backend/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,13 @@ REDIS_URL=redis://localhost:6379
# FEATURE_FLAG_MULTISIG=true
# FEATURE_FLAG_BATCH_PAYMENTS=true

# SEP-38 Quote Cache Expiration
# SEP38_INDICATIVE_QUOTE_EXPIRATION_SECONDS=60
# SEP38_FIRM_QUOTE_VALIDITY_SECONDS=300
# SEP38_QUOTE_CACHE_TTL_SECONDS=30
# SEP38_QUOTE_CACHE_STALE_TTL_SECONDS=30
# SEP38_ASSETS_CACHE_TTL_SECONDS=3600

# Email (SendGrid with Nodemailer fallback)
# SENDGRID_API_KEY=SG.xxxxxxxxxxxxxxxx

Expand Down
11 changes: 7 additions & 4 deletions backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@
"migrate:rollback": "ts-node scripts/generate-rollback.ts",
"migrate:status": "prisma migrate status",
"migrate:validate-env": "node scripts/validate-migration-env.js",
"migrate:bootstrap": "bash scripts/bootstrap-db.sh"
"migrate:bootstrap": "bash scripts/bootstrap-db.sh",
"clean": "node -e \"const fs=require('fs'),path=require('path');function walk(dir){if(!fs.existsSync(dir))return;for(const f of fs.readdirSync(dir)){const fp=path.join(dir,f);if(fs.statSync(fp).isDirectory())walk(fp);else if(['.db-journal','.db-wal','.db-shm'].some(e=>f.endsWith(e))){fs.unlinkSync(fp);console.log('Removed:',fp)}}};walk('.');['logs','coverage'].forEach(d=>{if(fs.existsSync(d)){fs.rmSync(d,{recursive:true,force:true});console.log('Removed:',d)}});console.log('Clean complete');\""
},
"dependencies": {
"@aws-sdk/client-kms": "^3.500.0",
"@aws-sdk/client-s3": "^3.1075.0",
"@bull-board/api": "^5.21.0",
"@bull-board/express": "^5.21.0",
"@iarna/toml": "^2.2.5",
Expand Down Expand Up @@ -60,16 +62,16 @@
"jsonwebtoken": "^9.0.3",
"multer": "^1.4.5-lts.2",
"node-cron": "^4.2.1",
"node-vault": "^0.10.2",
"nodemailer": "^6.10.1",
"node-vault": "^0.12.0",
"nodemailer": "^9.0.1",
"opossum": "^9.0.0",
"pdfkit": "^0.18.0",
"prom-client": "^15.1.0",
"rate-limit-redis": "^4.0.0",
"swagger-jsdoc": "^6.2.8",
"swagger-ui-express": "^5.0.1",
"uuid": "^9.0.0",
"vite": "6.4.1",
"vite": "^6.4.3",
"winston": "^3.19.0",
"zod": "^4.3.6"
},
Expand All @@ -89,6 +91,7 @@
"@types/swagger-ui-express": "^4.1.8",
"@types/uuid": "^9.0.0",
"@types/winston": "^2.4.4",
"nodemailer-mock": "^2.0.5",
"@typescript-eslint/eslint-plugin": "^7.3.1",
"@typescript-eslint/parser": "^7.3.1",
"eslint": "^8.57.0",
Expand Down
Empty file added backend/prisma/dev.db
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
-- CreateTable
CREATE TABLE "ContractEvent" (
"id" TEXT NOT NULL PRIMARY KEY,
"contractId" TEXT NOT NULL,
"ledger" INTEGER NOT NULL,
"ledgerClosedAt" DATETIME NOT NULL,
"txHash" TEXT NOT NULL,
"contractEventId" TEXT NOT NULL,
"topics" TEXT NOT NULL,
"value" TEXT NOT NULL,
"type" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- CreateTable
CREATE TABLE "MultisigTransaction" (
"id" TEXT NOT NULL PRIMARY KEY,
"envelopeXdr" TEXT NOT NULL,
"hash" TEXT NOT NULL,
"creatorPublicKey" TEXT NOT NULL,
"requiredSigners" JSONB NOT NULL,
"threshold" INTEGER NOT NULL,
"currentSignatures" INTEGER NOT NULL DEFAULT 0,
"status" TEXT NOT NULL DEFAULT 'PENDING',
"memo" TEXT,
"expiresAt" DATETIME,
"submittedAt" DATETIME,
"stellarTxId" TEXT,
"metadata" JSONB,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL
);

-- CreateTable
CREATE TABLE "MultisigSignature" (
"id" TEXT NOT NULL PRIMARY KEY,
"multisigTransactionId" TEXT NOT NULL,
"signerPublicKey" TEXT NOT NULL,
"signature" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "MultisigSignature_multisigTransactionId_fkey" FOREIGN KEY ("multisigTransactionId") REFERENCES "MultisigTransaction" ("id") ON DELETE CASCADE ON UPDATE CASCADE
);

-- CreateTable
CREATE TABLE "MultisigNotification" (
"id" TEXT NOT NULL PRIMARY KEY,
"multisigTransactionId" TEXT NOT NULL,
"recipientPublicKey" TEXT NOT NULL,
"type" TEXT NOT NULL,
"message" TEXT NOT NULL,
"readAt" DATETIME,
"sentAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "MultisigNotification_multisigTransactionId_fkey" FOREIGN KEY ("multisigTransactionId") REFERENCES "MultisigTransaction" ("id") ON DELETE CASCADE ON UPDATE CASCADE
);

-- CreateTable
CREATE TABLE "AssetValidationResult" (
"assetCode" TEXT NOT NULL,
"issuerPublicKey" TEXT NOT NULL,
"homeDomain" TEXT,
"complianceStatus" TEXT NOT NULL,
"messages" TEXT NOT NULL,
"rawToml" TEXT,
"lastCrawledAt" DATETIME NOT NULL,

PRIMARY KEY ("assetCode", "issuerPublicKey")
);

-- CreateTable
CREATE TABLE "CrawlJobRecord" (
"id" TEXT NOT NULL PRIMARY KEY,
"startedAt" DATETIME NOT NULL,
"completedAt" DATETIME,
"totalAssets" INTEGER NOT NULL,
"compliantCount" INTEGER NOT NULL,
"nonCompliantCount" INTEGER NOT NULL,
"suspiciousCount" INTEGER NOT NULL
);

-- CreateIndex
CREATE UNIQUE INDEX "ContractEvent_contractEventId_key" ON "ContractEvent"("contractEventId");

-- CreateIndex
CREATE INDEX "ContractEvent_contractId_idx" ON "ContractEvent"("contractId");

-- CreateIndex
CREATE INDEX "ContractEvent_txHash_idx" ON "ContractEvent"("txHash");

-- CreateIndex
CREATE INDEX "ContractEvent_ledger_idx" ON "ContractEvent"("ledger");

-- CreateIndex
CREATE UNIQUE INDEX "MultisigTransaction_hash_key" ON "MultisigTransaction"("hash");

-- CreateIndex
CREATE UNIQUE INDEX "MultisigTransaction_stellarTxId_key" ON "MultisigTransaction"("stellarTxId");

-- CreateIndex
CREATE UNIQUE INDEX "MultisigSignature_multisigTransactionId_signerPublicKey_key" ON "MultisigSignature"("multisigTransactionId", "signerPublicKey");

-- CreateIndex
CREATE INDEX "MultisigNotification_recipientPublicKey_readAt_idx" ON "MultisigNotification"("recipientPublicKey", "readAt");

-- CreateIndex
CREATE UNIQUE INDEX "AssetValidationResult_assetCode_issuerPublicKey_key" ON "AssetValidationResult"("assetCode", "issuerPublicKey");
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
-- AlterTable
ALTER TABLE "User" ADD COLUMN "phone" TEXT;

-- CreateTable
CREATE TABLE "NotificationPreference" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"emailEnabled" BOOLEAN NOT NULL DEFAULT true,
"smsEnabled" BOOLEAN NOT NULL DEFAULT false,
"pushEnabled" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "NotificationPreference_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
);

-- CreateTable
CREATE TABLE "Notification" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"transactionId" TEXT,
"type" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'PENDING',
"message" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Notification_transactionId_fkey" FOREIGN KEY ("transactionId") REFERENCES "Transaction" ("id") ON DELETE SET NULL ON UPDATE CASCADE
);

-- CreateTable
CREATE TABLE "ContractJob" (
"id" TEXT NOT NULL PRIMARY KEY,
"jobId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"priority" TEXT NOT NULL DEFAULT 'NORMAL',
"status" TEXT NOT NULL DEFAULT 'PENDING',
"contractId" TEXT,
"functionName" TEXT,
"parameters" JSONB,
"result" JSONB,
"error" TEXT,
"errorCategory" TEXT,
"errorSeverity" TEXT,
"errorCode" TEXT,
"userMessage" TEXT,
"suggestedAction" TEXT,
"retryable" BOOLEAN NOT NULL DEFAULT false,
"attempts" INTEGER NOT NULL DEFAULT 0,
"maxAttempts" INTEGER NOT NULL DEFAULT 3,
"createdBy" TEXT,
"metadata" JSONB,
"startedAt" DATETIME,
"completedAt" DATETIME,
"failedAt" DATETIME,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL
);

-- CreateTable
CREATE TABLE "UploadRecord" (
"id" TEXT NOT NULL PRIMARY KEY,
"key" TEXT NOT NULL,
"contentType" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'PENDING',
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL
);

-- CreateIndex
CREATE UNIQUE INDEX "NotificationPreference_userId_key" ON "NotificationPreference"("userId");

-- CreateIndex
CREATE INDEX "NotificationPreference_userId_idx" ON "NotificationPreference"("userId");

-- CreateIndex
CREATE INDEX "Notification_userId_idx" ON "Notification"("userId");

-- CreateIndex
CREATE INDEX "Notification_transactionId_idx" ON "Notification"("transactionId");

-- CreateIndex
CREATE UNIQUE INDEX "ContractJob_jobId_key" ON "ContractJob"("jobId");

-- CreateIndex
CREATE INDEX "ContractJob_jobId_idx" ON "ContractJob"("jobId");

-- CreateIndex
CREATE INDEX "ContractJob_status_idx" ON "ContractJob"("status");

-- CreateIndex
CREATE INDEX "ContractJob_createdBy_idx" ON "ContractJob"("createdBy");

-- CreateIndex
CREATE INDEX "ContractJob_type_idx" ON "ContractJob"("type");

-- CreateIndex
CREATE UNIQUE INDEX "UploadRecord_key_key" ON "UploadRecord"("key");

-- CreateIndex
CREATE INDEX "UploadRecord_status_idx" ON "UploadRecord"("status");
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- CreateIndex
CREATE INDEX "KycCustomer_status_idx" ON "KycCustomer"("status");
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- DropIndex
DROP INDEX "KycCustomer_status_idx";
5 changes: 3 additions & 2 deletions backend/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ generator client {
}

datasource db {
provider = "postgresql"
provider = "sqlite"
url = env("DATABASE_URL")
}

Expand Down Expand Up @@ -137,7 +137,7 @@ model Transaction {
feeAssetCode String?
feeType String?

// SEP-31 specific fields (nullable for backward compatibility)
// SEP-31 specific fields
senderInfo Json?
receiverInfo Json?
callbackUrl String?
Expand Down Expand Up @@ -231,6 +231,7 @@ model KycCustomer {

@@index([provider, providerRef])
@@index([userId])
@@index([status])
}

model Quote {
Expand Down
Loading
Loading