132 lines
6.1 KiB
PL/PgSQL
132 lines
6.1 KiB
PL/PgSQL
-- 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!'
|