database schema adjustments to server/realm/scene

This commit is contained in:
Evan Carroll 2026-01-16 10:57:47 -06:00
parent a102c96bb4
commit 09590edd95
79 changed files with 7100 additions and 100 deletions

132
db/seeds/development.sql Normal file
View file

@ -0,0 +1,132 @@
-- Chattyness Development Seed Data
-- PostgreSQL 18
--
-- Sample data for development and testing.
-- Load via: psql -f seeds/development.sql
--
-- WARNING: This will insert data. Run only on development databases.
\set ON_ERROR_STOP on
BEGIN;
-- =============================================================================
-- Test Users
-- =============================================================================
INSERT INTO auth.users (id, username, email, password_hash, display_name, reputation_tier, status)
VALUES
('11111111-1111-1111-1111-111111111111', 'admin', 'admin@example.com',
'$2a$12$dummy.hash.for.development.only', 'Server Admin', 'elder', 'active'),
('22222222-2222-2222-2222-222222222222', 'alice', 'alice@example.com',
'$2a$12$dummy.hash.for.development.only', 'Alice', 'trusted', 'active'),
('33333333-3333-3333-3333-333333333333', 'bob', 'bob@example.com',
'$2a$12$dummy.hash.for.development.only', 'Bob', 'established', 'active'),
('44444444-4444-4444-4444-444444444444', 'charlie', 'charlie@example.com',
'$2a$12$dummy.hash.for.development.only', 'Charlie', 'member', 'active')
ON CONFLICT DO NOTHING;
-- Make admin a server admin
INSERT INTO server.staff (user_id, role, appointed_by)
VALUES ('11111111-1111-1111-1111-111111111111', 'owner', '11111111-1111-1111-1111-111111111111')
ON CONFLICT DO NOTHING;
-- =============================================================================
-- Sample Props in Server Library
-- =============================================================================
INSERT INTO server.props (id, name, slug, description, asset_path, default_layer, default_position, tags)
VALUES
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Red Hat', 'red-hat',
'A stylish red hat', 'props/hats/red-hat.png', 'accessories', 1, ARRAY['hat', 'accessory', 'red']),
('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'Blue Shirt', 'blue-shirt',
'A casual blue shirt', 'props/clothing/blue-shirt.png', 'clothes', 4, ARRAY['shirt', 'clothing', 'blue']),
('cccccccc-cccc-cccc-cccc-cccccccccccc', 'Gold Coin', 'gold-coin',
'A shiny gold coin', 'props/items/gold-coin.png', NULL, NULL, ARRAY['currency', 'collectible']),
('dddddddd-dddd-dddd-dddd-dddddddddddd', 'Trophy', 'trophy',
'Achievement trophy', 'props/items/trophy.png', NULL, NULL, ARRAY['achievement', 'collectible'])
ON CONFLICT DO NOTHING;
-- =============================================================================
-- Sample Realm
-- =============================================================================
INSERT INTO realm.realms (id, name, slug, description, owner_id, privacy)
VALUES
('55555555-5555-5555-5555-555555555555', 'Welcome Plaza', 'welcome-plaza',
'The main gathering place for new users', '11111111-1111-1111-1111-111111111111', 'public')
ON CONFLICT DO NOTHING;
-- =============================================================================
-- Sample Scenes
-- =============================================================================
INSERT INTO realm.scenes (id, realm_id, name, slug, description, bounds, is_entry_point, sort_order)
VALUES
('66666666-6666-6666-6666-666666666666', '55555555-5555-5555-5555-555555555555',
'Main Hall', 'main-hall', 'The central gathering space',
ST_MakeEnvelope(0, 0, 1024, 768, 0), true, 0),
('77777777-7777-7777-7777-777777777777', '55555555-5555-5555-5555-555555555555',
'Garden', 'garden', 'A peaceful outdoor garden',
ST_MakeEnvelope(0, 0, 1280, 720, 0), false, 1)
ON CONFLICT DO NOTHING;
-- Set default scene for realm
UPDATE realm.realms
SET default_scene_id = '66666666-6666-6666-6666-666666666666'
WHERE id = '55555555-5555-5555-5555-555555555555';
-- =============================================================================
-- Sample Channels (Public instances of scenes)
-- =============================================================================
INSERT INTO realm.channels (id, scene_id, channel_type, max_users)
VALUES
('88888888-8888-8888-8888-888888888888', '66666666-6666-6666-6666-666666666666', 'public', 50),
('99999999-9999-9999-9999-999999999999', '77777777-7777-7777-7777-777777777777', 'public', 50)
ON CONFLICT DO NOTHING;
-- =============================================================================
-- Sample Memberships
-- =============================================================================
INSERT INTO realm.memberships (realm_id, user_id, role)
VALUES
('55555555-5555-5555-5555-555555555555', '11111111-1111-1111-1111-111111111111', 'owner'),
('55555555-5555-5555-5555-555555555555', '22222222-2222-2222-2222-222222222222', 'moderator'),
('55555555-5555-5555-5555-555555555555', '33333333-3333-3333-3333-333333333333', 'member'),
('55555555-5555-5555-5555-555555555555', '44444444-4444-4444-4444-444444444444', 'member')
ON CONFLICT DO NOTHING;
-- =============================================================================
-- Sample Spots
-- =============================================================================
INSERT INTO realm.spots (scene_id, name, slug, region, spot_type)
VALUES
('66666666-6666-6666-6666-666666666666', 'Info Desk', 'info-desk',
ST_SetSRID(ST_MakePolygon(ST_MakeLine(ARRAY[
ST_MakePoint(100, 100), ST_MakePoint(200, 100),
ST_MakePoint(200, 200), ST_MakePoint(100, 200),
ST_MakePoint(100, 100)
])), 0),
'normal'),
('66666666-6666-6666-6666-666666666666', 'Garden Portal', 'garden-portal',
ST_SetSRID(ST_Buffer(ST_MakePoint(800, 400), 50), 0),
'door')
ON CONFLICT DO NOTHING;
-- =============================================================================
-- Sample Friendships
-- =============================================================================
INSERT INTO auth.friendships (friend_a, friend_b, initiated_by, is_accepted, accepted_at)
VALUES
-- Alice and Bob are friends (Alice < Bob alphabetically in UUIDs)
('22222222-2222-2222-2222-222222222222', '33333333-3333-3333-3333-333333333333',
'22222222-2222-2222-2222-222222222222', true, now())
ON CONFLICT DO NOTHING;
COMMIT;
\echo 'Development seed data loaded successfully!'