51 lines
2.2 KiB
SQL
51 lines
2.2 KiB
SQL
-- Dropping existing tables to ensure clean slate for new schema structure
|
|
DROP TABLE IF EXISTS allocations;
|
|
DROP TABLE IF EXISTS acts_of_kindness;
|
|
DROP TABLE IF EXISTS users;
|
|
DROP TABLE IF EXISTS stream_config;
|
|
DROP TYPE IF EXISTS act_category;
|
|
|
|
-- Updated schema to match new application requirements
|
|
|
|
-- Enable UUID extension
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
-- Categories Enum
|
|
CREATE TYPE act_category AS ENUM ('Community', 'Environment', 'Education', 'Health', 'Other');
|
|
|
|
-- Acts of Kindness Table
|
|
CREATE TABLE IF NOT EXISTS acts (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
title TEXT NOT NULL,
|
|
description TEXT NOT NULL,
|
|
impact TEXT NOT NULL,
|
|
category act_category NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
user_wallet_address TEXT, -- Optional: if wallet connection is implemented
|
|
status TEXT DEFAULT 'active', -- active, archived, flagged
|
|
|
|
-- Metrics
|
|
total_allocation NUMERIC DEFAULT 0, -- Total funds allocated
|
|
stream_velocity NUMERIC DEFAULT 0 -- Current rate of funding
|
|
);
|
|
|
|
-- Allocations (Votes/Streams)
|
|
CREATE TABLE IF NOT EXISTS allocations (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
act_id UUID REFERENCES acts(id) ON DELETE CASCADE,
|
|
allocator_wallet_address TEXT, -- Who allocated
|
|
amount NUMERIC NOT NULL,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Create index for faster querying of active acts
|
|
CREATE INDEX idx_acts_created_at ON acts(created_at DESC);
|
|
CREATE INDEX idx_acts_category ON acts(category);
|
|
|
|
-- Added seed data for the demo
|
|
INSERT INTO acts (title, description, impact, category, total_allocation) VALUES
|
|
('Community Garden Cleanup', 'Cleared 500lbs of trash and planted native wildflowers in the downtown empty lot.', 'Local residents and pollinators', 'Environment', 450),
|
|
('After-school Coding Club', 'Providing free python lessons to 20 middle school students twice a week.', '20 students + families', 'Education', 890),
|
|
('Senior Grocery Delivery', 'Delivered weekly groceries to 15 homebound seniors during the winter storm.', '15 seniors', 'Community', 320),
|
|
('Free Mental Health Workshop', 'Hosted a weekend workshop on anxiety management techniques open to all.', '45 attendees', 'Health', 600);
|