Skip to content

chimaek/dbunny

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

36 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

DBunny - VS Code Database Extension

"Hop into your databases!"

DBunny Demo

English | ํ•œ๊ตญ์–ด


English

A fast and friendly database management extension for VS Code. Connect to 6 different databases, write queries, visualize schemas, and manage your data โ€” all without leaving the editor.

Supported Databases

Database Port Driver
MySQL 3306 mysql2
PostgreSQL 5432 pg
SQLite - sql.js (WebAssembly)
H2 5435 pg (PostgreSQL wire protocol)
MongoDB 27017 mongodb
Redis 6379 redis

Features

Connection Management

  • Encrypted Storage โ€” Passwords secured with AES-256-GCM, keys stored in VS Code SecretStorage
  • Connection Grouping โ€” Organize into folders (dev / staging / prod)
  • SSH Tunneling โ€” Connect to remote databases through SSH tunnel (local TCP server based)
  • Schema Explorer โ€” Browse databases, tables, and columns in a tree view
  • Table Favorites โ€” Star frequently used tables for quick access
  • Read-Only Mode โ€” Lock connections to prevent accidental writes on production databases
    • Blocks INSERT, UPDATE, DELETE, DROP, ALTER, CREATE, TRUNCATE, and more
    • Redis/MongoDB write command detection
    • Lock icon (๐Ÿ”’) in tree view, warning banner in query editor
    • Emergency unlock with modal confirmation dialog
  • Connection Color Coding โ€” Assign colors to visually distinguish environments
    • 8 preset colors: Red (Production), Orange (Staging), Green (Development), Blue (Local), and more
    • Color indicator in tree view, tab bar, connection badge, and status bar
    • Production warning banner for red-colored connections
    • Custom labels per connection (e.g., "Production", "Dev")
  • Connection Duplication & Sharing โ€” Clone, export, import, and template connections
    • One-click duplication with all settings preserved
    • Export as .dbunny.json (passwords excluded) for sharing with team members
    • Import shared connection files with validation
    • Save connections as reusable templates (up to 50)
  • Data Import โ€” Import CSV, JSON, and Excel (.xlsx) files directly into tables
    • Column mapping preview with auto-suggested mappings
    • Conflict handling: Skip / Overwrite / Upsert
    • Progress bar with real-time inserted/skipped/failed counters

Query Editor

  • Multi-Tab Query Editor โ€” Open multiple query tabs with per-tab connection assignment (Ctrl+Alt+T)
  • SQL Autocomplete โ€” Schema-aware suggestions for tables, columns, and keywords
    • Alias recognition (SELECT u. โ†’ suggests users columns)
    • FK-based JOIN ON suggestions
    • Subquery context awareness
    • Multi-table column disambiguation with prefix (u.name, p.title)
  • SQL CodeLens โ€” Inline "Run Query" button above each SQL statement
  • SQL Formatter โ€” Auto-format SQL with keyword uppercase and proper indentation (Shift+Alt+F)
  • Query Execution Plan โ€” EXPLAIN support for MySQL, PostgreSQL, SQLite (Ctrl+Alt+E)
  • Query History โ€” Track and reuse previously executed queries
  • Query Bookmarks โ€” Save frequently used queries with categories
  • MongoDB Shell Syntax โ€” db.collection.find() style commands with chaining (.limit(), .sort())
  • Query Parameters โ€” {{variable}} placeholder syntax with pre-execution input dialog
    • Save/load named variable sets per connection
    • Environment profiles (dev / staging / prod)
    • String literal and comment awareness (ignores placeholders inside quotes)

Query Results

  • Result Pinning โ€” Pin query results to keep them while running new queries
    • Side-by-side comparison of two results (before/after data changes)
    • Pin tab bar with timestamps and custom labels
    • Up to 20 pinned results per query tab
  • Inline Cell Editing โ€” Double-click to edit, Tab/Enter to navigate, Ctrl+S to save
  • Cell Expand View โ€” View long text and JSON with syntax highlighting in a modal
  • Multi-Row Selection โ€” Ctrl+Click to select, Delete to remove, Ctrl+C to copy
  • Result Filtering โ€” Global search (Ctrl+F) and per-column filter with value selection
  • Column Management โ€” Hide/show columns, drag-and-drop reorder, settings saved per query
  • Sorting โ€” Click column header for ascending/descending, NULL value handling
  • Export โ€” CSV and JSON export respecting column visibility and filters

Visualization

  • ERD Diagram โ€” Visualize table relationships with foreign key connections
    • 4 layouts: Grid, Relationship, Hierarchical, Circular
    • Orthogonal line routing to prevent overlapping
    • Drag & drop positioning with smooth animations
    • Export to SVG and PNG
  • Visual Table Editor โ€” GUI-based data editing with pending changes highlight
  • Schema Compare โ€” Side-by-side schema diff with Markdown report export

Development Tools

  • Mock Data Generator โ€” Generate test data with various types (names, emails, dates, numbers, etc.)
  • DB Migration โ€” Version-managed UP/DOWN scripts with rollback and SQL export
  • Copy Table Schema โ€” Copy CREATE TABLE statement to clipboard

Monitoring

  • Real-time Monitor โ€” View active processes and server status dashboard (MySQL / PostgreSQL)
  • Process Management โ€” Kill long-running queries directly from the monitor
  • Auto-refresh โ€” Configurable refresh intervals

Security

  • AES-256-GCM password encryption
  • SQL injection prevention with parameterized queries and validated identifiers
  • XSS prevention with HTML escaping in all WebView panels
  • Content Security Policy headers on all WebViews
  • Redis destructive commands (FLUSHDB, FLUSHALL) blocked
  • No data sent to external servers

Quick Start

  1. Click the DBunny icon in the Activity Bar
  2. Click + to add a new connection
  3. Select database type and enter credentials
  4. Click Save & Connect

Keyboard Shortcuts

Action Windows / Linux Mac
Execute Query Ctrl+Enter / F5 Cmd+Enter / F5
New Query Ctrl+Alt+N Cmd+Option+N
Multi-Tab Query Ctrl+Alt+T Cmd+Option+T
Add Connection Ctrl+Alt+D Cmd+Option+D
Save Query Ctrl+Alt+S Cmd+Option+S
Execution Plan Ctrl+Alt+E Cmd+Option+E
Format SQL Shift+Alt+F Shift+Option+F
Search Results Ctrl+F Cmd+F

Context Menu

Right-click on tables:

  • Edit Table Data
  • Copy Table Schema
  • Show ERD Diagram
  • Generate Mock Data
  • Query Execution Plan

Right-click on connections:

  • Show Real-time Monitor
  • Compare Schema
  • DB Migration

Settings

Setting Default Description
dbunny.queryTimeout 30000 Query timeout in milliseconds
dbunny.maxResults 1000 Maximum result rows returned
dbunny.language auto UI language (auto / en / ko)

Testing

# Start test DB containers (MySQL, PostgreSQL, MongoDB, Redis, H2)
docker compose up -d

# Run integration tests (121 tests across 6 DBs)
npx tsx src/test/integration/run-all.ts

# SQL autocomplete integration tests (MySQL + PostgreSQL)
npx tsx src/test/integration/completion.test.ts

# Query parameter integration tests (MySQL + PostgreSQL)
npx tsx src/test/integration/queryParameter.test.ts

# Result pinning integration tests (MySQL + PostgreSQL)
npx tsx src/test/integration/resultPin.test.ts

# SQL parser unit tests (no DB required)
npx tsx src/test/unit/sqlParser.standalone.ts

# Query parameter unit tests (no DB required)
npx tsx src/test/unit/queryParameter.standalone.ts

# Result pinning unit tests (no DB required)
npx tsx src/test/unit/resultPin.standalone.ts

# Unit tests
npm test

Upcoming Features

See ROADMAP.md for the full version-by-version plan.


ํ•œ๊ตญ์–ด

VS Code์—์„œ 6์ข…์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ์Šคํ‚ค๋งˆ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น ๋ฅด๊ณ  ์นœ๊ทผํ•œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

์ง€์› ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌํŠธ ๋“œ๋ผ์ด๋ฒ„
MySQL 3306 mysql2
PostgreSQL 5432 pg
SQLite - sql.js (WebAssembly)
H2 5435 pg (PostgreSQL ์™€์ด์–ด ํ”„๋กœํ† ์ฝœ)
MongoDB 27017 mongodb
Redis 6379 redis

๊ธฐ๋Šฅ

์—ฐ๊ฒฐ ๊ด€๋ฆฌ

  • ์•”ํ˜ธํ™” ์ €์žฅ โ€” AES-256-GCM์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”, VS Code SecretStorage์— ํ‚ค ์ €์žฅ
  • ์—ฐ๊ฒฐ ๊ทธ๋ฃนํ™” โ€” ํด๋”๋ณ„ ์ •๋ฆฌ (dev / staging / prod)
  • SSH ํ„ฐ๋„๋ง โ€” SSH ํ„ฐ๋„์„ ํ†ตํ•œ ์›๊ฒฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ (๋กœ์ปฌ TCP ์„œ๋ฒ„ ๊ธฐ๋ฐ˜)
  • ์Šคํ‚ค๋งˆ ํƒ์ƒ‰๊ธฐ โ€” ํŠธ๋ฆฌ ๋ทฐ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํ…Œ์ด๋ธ”, ์ปฌ๋Ÿผ ํƒ์ƒ‰
  • ํ…Œ์ด๋ธ” ์ฆ๊ฒจ์ฐพ๊ธฐ โ€” ๋ณ„ํ‘œ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ” ์ƒ๋‹จ ๊ณ ์ •
  • ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ โ€” ํ”„๋กœ๋•์…˜ DB ๋ณดํ˜ธ๋ฅผ ์œ„ํ•œ ์“ฐ๊ธฐ ์ฟผ๋ฆฌ ์ฐจ๋‹จ
    • INSERT, UPDATE, DELETE, DROP, ALTER, CREATE, TRUNCATE ๋“ฑ ์ฐจ๋‹จ
    • Redis/MongoDB ์“ฐ๊ธฐ ๋ช…๋ น์–ด ๊ฐ์ง€
    • ํŠธ๋ฆฌ๋ทฐ ์ž ๊ธˆ ์•„์ด์ฝ˜ (๐Ÿ”’), ์ฟผ๋ฆฌ ์—๋””ํ„ฐ ๊ฒฝ๊ณ  ๋ฐฐ๋„ˆ
    • ๊ธด๊ธ‰ ํ•ด์ œ ํ™•์ธ ๋‹ค์ด์–ผ๋กœ๊ทธ
  • ์—ฐ๊ฒฐ๋ณ„ ์ปฌ๋Ÿฌ ์ฝ”๋”ฉ โ€” ํ™˜๊ฒฝ๋ณ„ ์ƒ‰์ƒ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ๋ถ„
    • 8๊ฐ€์ง€ ํ”„๋ฆฌ์…‹ ์ƒ‰์ƒ: ๋นจ๊ฐ•(์šด์˜), ์ฃผํ™ฉ(์Šคํ…Œ์ด์ง•), ์ดˆ๋ก(๊ฐœ๋ฐœ), ํŒŒ๋ž‘(๋กœ์ปฌ) ๋“ฑ
    • ํŠธ๋ฆฌ๋ทฐ, ํƒญ ๋ฐ”, ์—ฐ๊ฒฐ ๋ฐฐ์ง€, ์ƒํƒœ ๋ฐ”์— ์ปฌ๋Ÿฌ ์ธ๋””์ผ€์ดํ„ฐ
    • ์šด์˜(๋นจ๊ฐ•) ์—ฐ๊ฒฐ ์‹œ ๊ฒฝ๊ณ  ๋ฐฐ๋„ˆ ํ‘œ์‹œ
    • ์—ฐ๊ฒฐ๋ณ„ ์‚ฌ์šฉ์ž ์ง€์ • ๋ผ๋ฒจ (์˜ˆ: "์šด์˜", "๊ฐœ๋ฐœ")
  • ์—ฐ๊ฒฐ ๋ณต์ œ ๋ฐ ๊ณต์œ  โ€” ๋ณต์ œ, ๋‚ด๋ณด๋‚ด๊ธฐ, ๊ฐ€์ ธ์˜ค๊ธฐ, ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ
    • ์›ํด๋ฆญ ์—ฐ๊ฒฐ ๋ณต์ œ (๋ชจ๋“  ์„ค์ • ๋ณด์กด)
    • .dbunny.json์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ (๋น„๋ฐ€๋ฒˆํ˜ธ ์ œ์™ธ) โ€” ํŒ€์›๊ณผ ๊ณต์œ 
    • ๊ณต์œ ๋ฐ›์€ ์—ฐ๊ฒฐ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ (์œ ํšจ์„ฑ ๊ฒ€์ฆ ํฌํ•จ)
    • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ๊ฒฐ ํ…œํ”Œ๋ฆฟ ์ €์žฅ (์ตœ๋Œ€ 50๊ฐœ)
  • ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ โ€” CSV, JSON, Excel(.xlsx) ํŒŒ์ผ์„ ํ…Œ์ด๋ธ”์— ์ง์ ‘ ๊ฐ€์ ธ์˜ค๊ธฐ
    • ์ปฌ๋Ÿผ ๋งคํ•‘ ๋ฏธ๋ฆฌ๋ณด๊ธฐ โ€” ์ž๋™ ๋งคํ•‘ ์ œ์•ˆ + ์ˆ˜๋™ ๋ณ€๊ฒฝ
    • ์ถฉ๋Œ ์ฒ˜๋ฆฌ: ๊ฑด๋„ˆ๋›ฐ๊ธฐ / ๋ฎ์–ด์“ฐ๊ธฐ / Upsert
    • ์ง„ํ–‰๋ฅ  ๋ฐ” + ์‚ฝ์ž…/๊ฑด๋„ˆ๋œ€/์‹คํŒจ ์‹ค์‹œ๊ฐ„ ์นด์šดํŠธ

์ฟผ๋ฆฌ ํŽธ์ง‘๊ธฐ

  • ๋ฉ€ํ‹ฐํƒญ ์ฟผ๋ฆฌ ์—๋””ํ„ฐ โ€” ํƒญ๋ณ„ ์—ฐ๊ฒฐ ํ• ๋‹น, ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ๋ฅผ ๋™์‹œ์— ์ž‘์—… (Ctrl+Alt+T)
  • SQL ์ž๋™์™„์„ฑ โ€” ์Šคํ‚ค๋งˆ ์ธ์‹ ๊ธฐ๋ฐ˜ ํ…Œ์ด๋ธ”, ์ปฌ๋Ÿผ, ํ‚ค์›Œ๋“œ ์ž๋™ ์ œ์•ˆ
    • ๋ณ„์นญ(Alias) ์ธ์‹ (SELECT u. โ†’ users ์ปฌ๋Ÿผ ์ œ์•ˆ)
    • FK ๊ธฐ๋ฐ˜ JOIN ON ์ž๋™ ์ œ์•ˆ
    • ์„œ๋ธŒ์ฟผ๋ฆฌ ์ปจํ…์ŠคํŠธ ์ธ์‹
    • ๋‹ค์ค‘ ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ๊ตฌ๋ถ„ (u.name, p.title ์ ‘๋‘์‚ฌ ํฌํ•จ)
  • SQL CodeLens โ€” ๊ฐ SQL ๊ตฌ๋ฌธ ์œ„์— ์ธ๋ผ์ธ "Run Query" ๋ฒ„ํŠผ ํ‘œ์‹œ
  • SQL ํฌ๋งคํ„ฐ โ€” ํ‚ค์›Œ๋“œ ๋Œ€๋ฌธ์žํ™”, ์ž๋™ ๋“ค์—ฌ์“ฐ๊ธฐ (Shift+Alt+F)
  • ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš โ€” MySQL, PostgreSQL, SQLite EXPLAIN ์ง€์› (Ctrl+Alt+E)
  • ์ฟผ๋ฆฌ ํžˆ์Šคํ† ๋ฆฌ โ€” ์ด์ „ ์‹คํ–‰ ์ฟผ๋ฆฌ ์ถ”์  ๋ฐ ์žฌ์‚ฌ์šฉ
  • ์ฟผ๋ฆฌ ๋ถ๋งˆํฌ โ€” ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ ์ €์žฅ
  • MongoDB Shell ๋ฌธ๋ฒ• โ€” db.collection.find() ์Šคํƒ€์ผ ๋ช…๋ น์–ด, ์ฒด์ด๋‹ ์ง€์› (.limit(), .sort())
  • ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ โ€” {{๋ณ€์ˆ˜๋ช…}} ํ”Œ๋ ˆ์ด์Šคํ™€๋” ๋ฌธ๋ฒ•, ์‹คํ–‰ ์ „ ์ž…๋ ฅ ๋‹ค์ด์–ผ๋กœ๊ทธ
    • ์—ฐ๊ฒฐ๋ณ„ ๋ณ€์ˆ˜ ์„ธํŠธ ์ €์žฅ ๋ฐ ์žฌ์‚ฌ์šฉ
    • ํ™˜๊ฒฝ ํ”„๋กœํ•„ (dev / staging / prod)
    • ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด/์ฃผ์„ ๋‚ด๋ถ€ ํ”Œ๋ ˆ์ด์Šคํ™€๋” ๋ฌด์‹œ

์ฟผ๋ฆฌ ๊ฒฐ๊ณผ

  • ๊ฒฐ๊ณผ ๊ณ ์ •(Pinning) โ€” ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ•€์œผ๋กœ ๊ณ ์ •ํ•˜์—ฌ ์ƒˆ ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ์—๋„ ๋ณด๊ด€
    • ๋‚˜๋ž€ํžˆ ๋ณด๊ธฐ๋กœ ๋‘ ๊ฒฐ๊ณผ ๋น„๊ต (๋ณ€๊ฒฝ ์ „/ํ›„ ๋ฐ์ดํ„ฐ ๋น„๊ต)
    • ํ•€ ํƒญ ๋ฐ” โ€” ํƒ€์ž„์Šคํƒฌํ”„์™€ ์‚ฌ์šฉ์ž ์ง€์ • ๋ผ๋ฒจ๋กœ ๊ด€๋ฆฌ
    • ์ฟผ๋ฆฌ ํƒญ๋‹น ์ตœ๋Œ€ 20๊ฐœ ํ•€ ์ง€์›
  • ์ธ๋ผ์ธ ์…€ ํŽธ์ง‘ โ€” ๋”๋ธ”ํด๋ฆญ์œผ๋กœ ์ˆ˜์ •, Tab/Enter๋กœ ์ด๋™, Ctrl+S๋กœ ์ €์žฅ
  • ์…€ ํ™•์žฅ ๋ทฐ โ€” ๊ธด ํ…์ŠคํŠธ์™€ JSON์„ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ๋ชจ๋‹ฌ๋กœ ํ‘œ์‹œ
  • ๋ฉ€ํ‹ฐํ–‰ ์„ ํƒ โ€” Ctrl+Click์œผ๋กœ ์„ ํƒ, Delete๋กœ ์‚ญ์ œ, Ctrl+C๋กœ ๋ณต์‚ฌ
  • ๊ฒฐ๊ณผ ํ•„ํ„ฐ๋ง โ€” ์ „์ฒด ๊ฒ€์ƒ‰ (Ctrl+F) ๋ฐ ์ปฌ๋Ÿผ๋ณ„ ๊ฐ’ ์„ ํƒ ํ•„ํ„ฐ
  • ์ปฌ๋Ÿผ ๊ด€๋ฆฌ โ€” ์ˆจ๊ธฐ๊ธฐ/ํ‘œ์‹œ, ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์ˆœ์„œ ๋ณ€๊ฒฝ, ์ฟผ๋ฆฌ๋ณ„ ์„ค์ • ์ €์žฅ
  • ์ •๋ ฌ โ€” ์ปฌ๋Ÿผ ํ—ค๋” ํด๋ฆญ์œผ๋กœ ์˜ค๋ฆ„/๋‚ด๋ฆผ์ฐจ์ˆœ, NULL ๊ฐ’ ์ฒ˜๋ฆฌ
  • ๋‚ด๋ณด๋‚ด๊ธฐ โ€” ์ปฌ๋Ÿผ ๊ฐ€์‹œ์„ฑ๊ณผ ํ•„ํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•œ CSV, JSON ๋‚ด๋ณด๋‚ด๊ธฐ

์‹œ๊ฐํ™”

  • ERD ๋‹ค์ด์–ด๊ทธ๋žจ โ€” FK ๊ธฐ๋ฐ˜ ํ…Œ์ด๋ธ” ๊ด€๊ณ„ ์‹œ๊ฐํ™”
    • 4๊ฐ€์ง€ ๋ ˆ์ด์•„์›ƒ: Grid, Relationship, Hierarchical, Circular
    • ์ง๊ต์„  ๋ผ์šฐํŒ…์œผ๋กœ ํ…Œ์ด๋ธ” ๊ฒน์นจ ๋ฐฉ์ง€
    • ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ๋ฐฐ์น˜, ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜
    • SVG, PNG ๋‚ด๋ณด๋‚ด๊ธฐ
  • ๋น„์ฃผ์–ผ ํ…Œ์ด๋ธ” ํŽธ์ง‘๊ธฐ โ€” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ์žˆ๋Š” GUI ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ํŽธ์ง‘
  • ์Šคํ‚ค๋งˆ ๋น„๊ต โ€” ๋‚˜๋ž€ํžˆ ๋น„๊ตํ•˜๋Š” ์Šคํ‚ค๋งˆ Diff ๋ทฐ, Markdown ๋ฆฌํฌํŠธ ๋‚ด๋ณด๋‚ด๊ธฐ

๊ฐœ๋ฐœ ๋„๊ตฌ

  • ๋ชฉ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๊ธฐ โ€” ์ด๋ฆ„, ์ด๋ฉ”์ผ, ๋‚ ์งœ, ์ˆซ์ž ๋“ฑ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
  • DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ โ€” ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋ฐ˜ UP/DOWN ์Šคํฌ๋ฆฝํŠธ, ๋กค๋ฐฑ ๋ฐ SQL ๋‚ด๋ณด๋‚ด๊ธฐ
  • ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ ๋ณต์‚ฌ โ€” CREATE TABLE ๊ตฌ๋ฌธ์„ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ

๋ชจ๋‹ˆํ„ฐ๋ง

  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ โ€” ํ™œ์„ฑ ํ”„๋กœ์„ธ์Šค ๋ฐ ์„œ๋ฒ„ ์ƒํƒœ ๋Œ€์‹œ๋ณด๋“œ (MySQL / PostgreSQL)
  • ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ โ€” ๋ชจ๋‹ˆํ„ฐ์—์„œ ์žฅ์‹œ๊ฐ„ ์‹คํ–‰ ์ฟผ๋ฆฌ ์ง์ ‘ ์ข…๋ฃŒ
  • ์ž๋™ ์ƒˆ๋กœ๊ณ ์นจ โ€” ์„ค์ • ๊ฐ€๋Šฅํ•œ ๊ฐฑ์‹  ์ฃผ๊ธฐ

๋ณด์•ˆ

  • AES-256-GCM ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
  • ํŒŒ๋ผ๋ฏธํ„ฐํ™”๋œ ์ฟผ๋ฆฌ ๋ฐ ์‹๋ณ„์ž ๊ฒ€์ฆ์œผ๋กœ SQL ์ธ์ ์…˜ ๋ฐฉ์ง€
  • ๋ชจ๋“  WebView ํŒจ๋„์—์„œ HTML ์ด์Šค์ผ€์ดํ•‘์œผ๋กœ XSS ๋ฐฉ์ง€
  • ๋ชจ๋“  WebView์— Content Security Policy ํ—ค๋” ์ ์šฉ
  • Redis ํŒŒ๊ดด์  ๋ช…๋ น์–ด (FLUSHDB, FLUSHALL) ์ฐจ๋‹จ
  • ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก ์—†์Œ

๋น ๋ฅธ ์‹œ์ž‘

  1. Activity Bar์—์„œ DBunny ์•„์ด์ฝ˜ ํด๋ฆญ
  2. + ๋ฒ„ํŠผ์œผ๋กœ ์ƒˆ ์—ฐ๊ฒฐ ์ถ”๊ฐ€
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ํ˜• ์„ ํƒ ํ›„ ์ธ์ฆ ์ •๋ณด ์ž…๋ ฅ
  4. Save & Connect ํด๋ฆญ

ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค

๋™์ž‘ Windows / Linux Mac
์ฟผ๋ฆฌ ์‹คํ–‰ Ctrl+Enter / F5 Cmd+Enter / F5
์ƒˆ ์ฟผ๋ฆฌ Ctrl+Alt+N Cmd+Option+N
๋ฉ€ํ‹ฐํƒญ ์ฟผ๋ฆฌ Ctrl+Alt+T Cmd+Option+T
์—ฐ๊ฒฐ ์ถ”๊ฐ€ Ctrl+Alt+D Cmd+Option+D
์ฟผ๋ฆฌ ์ €์žฅ Ctrl+Alt+S Cmd+Option+S
์‹คํ–‰ ๊ณ„ํš Ctrl+Alt+E Cmd+Option+E
SQL ์ •๋ ฌ Shift+Alt+F Shift+Option+F
๊ฒฐ๊ณผ ๊ฒ€์ƒ‰ Ctrl+F Cmd+F

์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด

ํ…Œ์ด๋ธ” ์šฐํด๋ฆญ:

  • ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ํŽธ์ง‘
  • ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ ๋ณต์‚ฌ
  • ERD ๋‹ค์ด์–ด๊ทธ๋žจ ํ‘œ์‹œ
  • ๋ชฉ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
  • ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš

์—ฐ๊ฒฐ ์šฐํด๋ฆญ:

  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ ํ‘œ์‹œ
  • ์Šคํ‚ค๋งˆ ๋น„๊ต
  • DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์„ค์ •

์„ค์ • ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
dbunny.queryTimeout 30000 ์ฟผ๋ฆฌ ํƒ€์ž„์•„์›ƒ (๋ฐ€๋ฆฌ์ดˆ)
dbunny.maxResults 1000 ์ตœ๋Œ€ ๊ฒฐ๊ณผ ํ–‰ ์ˆ˜
dbunny.language auto UI ์–ธ์–ด (auto / en / ko)

ํ…Œ์ŠคํŠธ

# ํ…Œ์ŠคํŠธ์šฉ DB ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ (MySQL, PostgreSQL, MongoDB, Redis, H2)
docker compose up -d

# ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹คํ–‰ (6๊ฐœ DB ๋Œ€์ƒ 121๊ฐœ ํ…Œ์ŠคํŠธ)
npx tsx src/test/integration/run-all.ts

# SQL ์ž๋™์™„์„ฑ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (MySQL + PostgreSQL)
npx tsx src/test/integration/completion.test.ts

# ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (MySQL + PostgreSQL)
npx tsx src/test/integration/queryParameter.test.ts

# ๊ฒฐ๊ณผ ๊ณ ์ •(Pin) ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (MySQL + PostgreSQL)
npx tsx src/test/integration/resultPin.test.ts

# SQL ํŒŒ์„œ ์œ ๋‹› ํ…Œ์ŠคํŠธ (DB ๋ถˆํ•„์š”)
npx tsx src/test/unit/sqlParser.standalone.ts

# ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ์œ ๋‹› ํ…Œ์ŠคํŠธ (DB ๋ถˆํ•„์š”)
npx tsx src/test/unit/queryParameter.standalone.ts

# ๊ฒฐ๊ณผ ๊ณ ์ •(Pin) ์œ ๋‹› ํ…Œ์ŠคํŠธ (DB ๋ถˆํ•„์š”)
npx tsx src/test/unit/resultPin.standalone.ts

# ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
npm test

์ถ”๊ฐ€ ์˜ˆ์ • ๊ธฐ๋Šฅ

๋ฒ„์ „๋ณ„ ์ƒ์„ธ ๊ณ„ํš์€ ROADMAP.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


License / ๋ผ์ด์„ ์Šค

See LICENSE file. LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.


Happy querying!

About

๐Ÿฐ Hop into your databases! Fast and friendly database management for VS Code โ€” MySQL, PostgreSQL, SQLite, H2, MongoDB, Redis

Topics

Resources

License

Stars

Watchers

Forks

Contributors