Files
aitbc/apps/coordinator-api/migrations/004_payments.sql
AITBC System b033923756 chore: normalize file permissions across repository
- Remove executable permissions from configuration files (.editorconfig, .env.example, .gitignore)
- Remove executable permissions from documentation files (README.md, LICENSE, SECURITY.md)
- Remove executable permissions from web assets (HTML, CSS, JS files)
- Remove executable permissions from data files (JSON, SQL, YAML, requirements.txt)
- Remove executable permissions from source code files across all apps
- Add executable permissions to Python
2026-03-08 11:26:18 +01:00

55 lines
1.9 KiB
SQL

-- Migration: Add payment support
-- Date: 2026-01-26
-- Add payment tracking to jobs table
ALTER TABLE job
ADD COLUMN payment_id VARCHAR(255) REFERENCES job_payments(id),
ADD COLUMN payment_status VARCHAR(20);
-- Create job_payments table
CREATE TABLE IF NOT EXISTS job_payments (
id VARCHAR(255) PRIMARY KEY,
job_id VARCHAR(255) NOT NULL,
amount DECIMAL(20, 8) NOT NULL,
currency VARCHAR(10) DEFAULT 'AITBC',
status VARCHAR(20) DEFAULT 'pending',
payment_method VARCHAR(20) DEFAULT 'aitbc_token',
escrow_address VARCHAR(100),
refund_address VARCHAR(100),
transaction_hash VARCHAR(100),
refund_transaction_hash VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
escrowed_at TIMESTAMP,
released_at TIMESTAMP,
refunded_at TIMESTAMP,
expires_at TIMESTAMP,
meta_data JSON
);
-- Create payment_escrows table
CREATE TABLE IF NOT EXISTS payment_escrows (
id VARCHAR(255) PRIMARY KEY,
payment_id VARCHAR(255) NOT NULL,
amount DECIMAL(20, 8) NOT NULL,
currency VARCHAR(10) DEFAULT 'AITBC',
address VARCHAR(100) NOT NULL,
is_active BOOLEAN DEFAULT TRUE,
is_released BOOLEAN DEFAULT FALSE,
is_refunded BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
released_at TIMESTAMP,
refunded_at TIMESTAMP,
expires_at TIMESTAMP
);
-- Create indexes
CREATE INDEX IF NOT EXISTS idx_job_payments_job_id ON job_payments(job_id);
CREATE INDEX IF NOT EXISTS idx_job_payments_status ON job_payments(status);
CREATE INDEX IF NOT EXISTS idx_job_payments_created_at ON job_payments(created_at);
CREATE INDEX IF NOT EXISTS idx_payment_escrows_payment_id ON payment_escrows(payment_id);
CREATE INDEX IF NOT EXISTS idx_payment_escrows_address ON payment_escrows(address);
-- Add index for job payment_id
CREATE INDEX IF NOT EXISTS idx_job_payment_id ON job(payment_id);