agentsclimarketplace

Postgres patterns

Skill mturac/everything-openai-codex/docs/tr/skills/postgres-patterns

EOC: open-source operating system for OpenAI Codex workflows with agents, skills, hooks, rules, memory, safety gates, and cross-harness adapters.

Install
npx -y skills add mturac/everything-openai-codex --skill postgres-patterns

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Sorgu optimizasyonu, şema tasarımı, indeksleme ve güvenlik için PostgreSQL veritabanı kalıpları. Supabase en iyi uygulamalarına dayanır.

SKILL.md

3.9 KB, as published. Nobody here has run it

PostgreSQL Kalıpları

PostgreSQL en iyi uygulamaları için hızlı referans. Detaylı kılavuz için database-reviewer agent'ını kullanın.

Ne Zaman Aktifleştirmeli

  • SQL sorguları veya migration'lar yazarken
  • Veritabanı şemaları tasarlarken
  • Yavaş sorguları troubleshoot ederken
  • Row Level Security uygularken
  • Connection pooling kurarken

Hızlı Referans

İndeks Hile Sayfası

Sorgu Kalıbıİndeks TipiÖrnek
WHERE col = valueB-tree (varsayılan)CREATE INDEX idx ON t (col)
WHERE col > valueB-treeCREATE INDEX idx ON t (col)
WHERE a = x AND b > yCompositeCREATE INDEX idx ON t (a, b)
WHERE jsonb @> '{}'GINCREATE INDEX idx ON t USING gin (col)
WHERE tsv @@ queryGINCREATE INDEX idx ON t USING gin (col)
Zaman serisi aralıklarıBRINCREATE INDEX idx ON t USING brin (col)

Veri Tipi Hızlı Referans

Kullanım SenaryosuDoğru TipKaçın
ID'lerbigintint, rastgele UUID
String'lertextvarchar(255)
Timestamp'lertimestamptztimestamp
Paranumeric(10,2)float
Flag'lerbooleanvarchar, int

Yaygın Kalıplar

Composite İndeks Sırası:

-- Önce eşitlik sütunları, sonra aralık sütunları
CREATE INDEX idx ON orders (status, created_at);
-- Şunlar için çalışır: WHERE status = 'pending' AND created_at > '2024-01-01'

Covering İndeks:

CREATE INDEX idx ON users (email) INCLUDE (name, created_at);
-- SELECT email, name, created_at için tablo aramasını önler

Partial İndeks:

CREATE INDEX idx ON users (email) WHERE deleted_at IS NULL;
-- Daha küçük indeks, sadece aktif kullanıcıları içerir

RLS Policy (Optimize Edilmiş):

CREATE POLICY policy ON orders
  USING ((SELECT auth.uid()) = user_id);  -- SELECT'e sar!

UPSERT:

INSERT INTO settings (user_id, key, value)
VALUES (123, 'theme', 'dark')
ON CONFLICT (user_id, key)
DO UPDATE SET value = EXCLUDED.value;

Cursor Sayfalama:

SELECT * FROM products WHERE id > $last_id ORDER BY id LIMIT 20;
-- O(1) vs O(n) olan OFFSET

Kuyruk İşleme:

UPDATE jobs SET status = 'processing'
WHERE id = (
  SELECT id FROM jobs WHERE status = 'pending'
  ORDER BY created_at LIMIT 1
  FOR UPDATE SKIP LOCKED
) RETURNING *;

Anti-Kalıp Tespiti

-- İndekslenmemiş foreign key'leri bul
SELECT conrelid::regclass, a.attname
FROM pg_constraint c
JOIN pg_attribute a ON a.attrelid = c.conrelid AND a.attnum = ANY(c.conkey)
WHERE c.contype = 'f'
  AND NOT EXISTS (
    SELECT 1 FROM pg_index i
    WHERE i.indrelid = c.conrelid AND a.attnum = ANY(i.indkey)
  );

-- Yavaş sorguları bul
SELECT query, mean_exec_time, calls
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC;

-- Tablo bloat'ını kontrol et
SELECT relname, n_dead_tup, last_vacuum
FROM pg_stat_user_tables
WHERE n_dead_tup > 1000
ORDER BY n_dead_tup DESC;

Yapılandırma Şablonu

-- Bağlantı limitleri (RAM için ayarla)
ALTER SYSTEM SET max_connections = 100;
ALTER SYSTEM SET work_mem = '8MB';

-- Timeout'lar
ALTER SYSTEM SET idle_in_transaction_session_timeout = '30s';
ALTER SYSTEM SET statement_timeout = '30s';

-- İzleme
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

-- Güvenlik varsayılanları
REVOKE ALL ON SCHEMA public FROM public;

SELECT pg_reload_conf();

İlgili

  • Agent: database-reviewer - Tam veritabanı inceleme iş akışı
  • Skill: clickhouse-io - ClickHouse analytics kalıpları
  • Skill: backend-patterns - API ve backend kalıpları

Supabase Agent Skills'e dayanır (kredi: Supabase ekibi) (MIT License)

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.