mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-08-12 03:30:57 +00:00
fix/repair-missing-db-functions
A user hit "Could not find the function public.upsert_user_profile(...) in the schema cache" when toggling push notifications. The function was missing, and so were the profiles columns it writes — while schema_migrations listed both 002 and 004 as applied. That pattern turned out to be widespread. Comparing every function declared across the migrations against the live database: 25 are missing, from six migrations all recorded as applied. Their tables exist; only the function bodies are absent. Those files carry "Run this in Supabase SQL Editor" headers, so they were pasted in by hand before apply-migrations.sh existed and a run that stopped partway was still recorded. The runner has skipped them ever since, which is why this stayed invisible until it surfaced as a user-facing error. apply-migrations.sh is not at fault: it wraps each migration and its tracking row in one transaction with ON_ERROR_STOP, so it cannot half-record anything. It inherited a dirty history. Three of the 25 are actually reached by the app, so those are repaired here: apply_for_tier_upgrade MerchantApplication.tsx:213 - tier upgrades were dead check_tier_eligibility called by the above update_p2p_reputation shared/lib/p2p-fiat.ts:803 - reputation never updated This is forward-only repair, not a replay of the source files. Replaying them would abort on their bare CREATE POLICY/INDEX/TRIGGER statements now that the tables exist, and 20241117054602 in particular would overwrite 016's newer cancel_expired_trades with its own older definition. Verified before writing: every table the three functions touch is present, and the whole migration was run inside BEGIN/ROLLBACK against production — three functions created, signatures matching what the callers pass, then rolled back leaving nothing behind. The remaining 22 stay missing on purpose and are listed in known-schema-gaps.txt. Nothing calls them, and several are trigger bodies whose triggers were never created either, so creating them would switch on behaviour that has never run. Also adds a drift check to apply-migrations.sh: after applying, it compares declared functions against the database and flags anything missing that is not in the known-gaps list. Being recorded as applied is not proof of having been applied, and that gap should never again be discovered by a user. The check already earned itself — it caught update_p2p_reputation, which my own first pass had missed to a regex that dropped digits from function names. upsert_user_profile and the profiles notification columns were applied directly to the database from their existing migrations (002, 004), which are fully idempotent; no new migration was needed for them.
Pezkuwi Web App Projects (PWAP)
Monorepo for Pezkuwi blockchain frontend applications.
Project Structure
pwap/
├── web/ # Main web application
├── mobile/ # Mobile application (React Native + Expo)
├── backend/ # Backend API services
├── shared/ # Shared code and utilities
└── package.json # Root package with build scripts
Related Repositories
| Repository | Description | URL |
|---|---|---|
| pezkuwi-sdk-ui | Blockchain Explorer & Developer Tools | https://github.com/pezkuwichain/pezkuwi-sdk-ui |
| pezkuwi-extension | Browser Wallet Extension | https://github.com/pezkuwichain/pezkuwi-extension |
Projects
1. web/ - Main Web Application
Status: ✅ Production Ready
The primary web interface for Pezkuwi blockchain at app.pezkuwichain.io
Tech Stack:
- React 18 + TypeScript
- Vite
- @pezkuwi/api
- Supabase (Auth & Database)
- Tailwind CSS + shadcn/ui
- i18next
Features:
- Wallet integration (Pezkuwi Extension)
- Live blockchain data
- Staking dashboard
- DEX/Swap interface
- P2P Fiat Trading with atomic escrow
- Transaction history
- Multi-language support (EN, TR, KMR, CKB, AR, FA)
- Governance with live blockchain integration
cd web
npm install
npm run dev
2. mobile/ - Mobile Application
Status: 🚧 In Development
React Native Expo app for iOS and Android.
Features:
- Welcome screen with language selection
- Multi-language support (6 languages with RTL)
- Authentication (Sign In/Up)
- Main dashboard navigation (5-tab bottom nav)
- Wallet integration with @pezkuwi/api
- Live blockchain data (HEZ, PEZ, USDT)
- Send/receive transactions
- Biometric authentication
cd mobile
npm install
npm start
3. backend/ - Backend Services
API services for the applications.
cd backend
npm install
npm run dev
4. shared/ - Shared Code
Common code, types, and utilities used across all platforms.
shared/
├── types/ # TypeScript type definitions
├── utils/ # Helper functions
├── blockchain/ # Blockchain utilities
├── constants/ # App constants
├── images/ # Shared images and logos
└── i18n/ # Internationalization
Quick Start
Prerequisites
- Node.js 18+
- npm
Installation
# Clone repository
git clone https://github.com/pezkuwichain/pwap.git
cd pwap
# Install all dependencies
npm install
# Or install individually
npm run install:web
npm run install:mobile
npm run install:backend
Build All Projects
npm run build
This builds:
web- Vite production buildpezkuwi-sdk-ui- Full SDK UI build (separate repo)mobile- Expo web export
Development
# Run web and mobile in parallel
npm run dev
# Or run individually
npm run dev:web
npm run dev:mobile
Multi-Language Support
All applications support:
- 🇬🇧 English (EN)
- 🇹🇷 Türkçe (TR)
- ☀️ Kurmancî (KMR)
- ☀️ سۆرانی (CKB)
- 🇸🇦 العربية (AR)
- 🇮🇷 فارسی (FA)
RTL support for CKB, AR, FA.
Scripts
| Command | Description |
|---|---|
npm run build |
Build all projects |
npm run dev |
Start development servers |
npm run lint |
Run linters |
npm run test |
Run tests |
npm run install:all |
Install all dependencies |
Links
- Website: https://app.pezkuwichain.io
- Website (alt): https://pex.mom
- Exchange: https://pex.network
- Documentation: https://docs.pezkuwichain.io
License
Apache-2.0
Languages
TypeScript
83.6%
PLpgSQL
8.7%
Rust
3.8%
JavaScript
2.3%
CSS
0.7%
Other
0.8%