// Package writers provides interfaces and implementations for writing database schemas
// to various output formats and destinations.
//
// # Overview
//
// The writers package defines a common Writer interface that all format-specific writers
// implement. This allows RelSpec to export database schemas to multiple formats including:
//   - SQL schema files (PostgreSQL, SQLite)
//   - Schema definition files (DBML, DCTX, DrawDB, GraphQL)
//   - ORM model files (GORM, Bun, Drizzle, Prisma, TypeORM)
//   - Data interchange formats (JSON, YAML)
//
// # Architecture
//
// Each writer implementation is located in its own subpackage (e.g., pkg/writers/dbml,
// pkg/writers/pgsql) and implements the Writer interface, supporting three levels of
// granularity:
//   - WriteDatabase() - Write complete database with all schemas
//   - WriteSchema() - Write single schema with all tables
//   - WriteTable() - Write single table with all columns and metadata
//
// # Usage
//
// Writers are instantiated with WriterOptions containing destination-specific configuration:
//
//	// Write to file
//	writer := dbml.NewWriter(&writers.WriterOptions{
//	    OutputPath: "schema.dbml",
//	})
//	err := writer.WriteDatabase(db)
//
//	// Write ORM models with package name
//	writer := gorm.NewWriter(&writers.WriterOptions{
//	    OutputPath:  "./models",
//	    PackageName: "models",
//	})
//	err := writer.WriteDatabase(db)
//
//	// Write with schema flattening for SQLite
//	writer := sqlite.NewWriter(&writers.WriterOptions{
//	    OutputPath:    "schema.sql",
//	    FlattenSchema: true,
//	})
//	err := writer.WriteDatabase(db)
//
// # Schema Flattening
//
// The FlattenSchema option controls how schema-qualified table names are handled:
//   - false (default): Uses dot notation (schema.table)
//   - true: Joins with underscore (schema_table), useful for SQLite
//
// # Supported Formats
//
//   - dbml: Database Markup Language files
//   - dctx: DCTX schema files
//   - drawdb: DrawDB JSON format
//   - graphql: GraphQL schema definition language
//   - json: JSON database schema
//   - yaml: YAML database schema
//   - gorm: Go GORM model structs
//   - bun: Go Bun model structs
//   - drizzle: TypeScript Drizzle ORM schemas
//   - prisma: Prisma schema language
//   - typeorm: TypeScript TypeORM entities
//   - pgsql: PostgreSQL SQL schema
//   - sqlite: SQLite SQL schema with automatic flattening
package writers
