golang

command
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2025 License: MIT Imports: 17 Imported by: 0

README

Fakestack Logo

Fakestack

High-performance database generator written in Go.

This binary is used by both the Python and Node.js wrappers.

Prerequisites

Quick Start

# Install dependencies
go mod download

# Build binary
go build -o fakestack

# Run
./fakestack -d .
./fakestack -cpf schema.json

Building

Single platform:

go build -o fakestack

Cross-compile all platforms:

../scripts/build.sh

This creates binaries in ../bin/:

  • fakestack-linux-amd64
  • fakestack-linux-arm64
  • fakestack-darwin-amd64 (Intel Mac)
  • fakestack-darwin-arm64 (Apple Silicon)
  • fakestack-windows-amd64.exe

Manual cross-compilation:

GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ../bin/fakestack-linux-amd64
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o ../bin/fakestack-darwin-arm64
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o ../bin/fakestack-windows-amd64.exe

Usage

# Generate schema interactively
./fakestack -g . 

# Download example schema
./fakestack -d <directory>

# Create tables from schema
./fakestack -c -f schema.json

# Populate tables with fake data
./fakestack -p -f schema.json

# Create and populate in one command
./fakestack -cpf schema.json

Features

✅ 116+ Fake Data Generators - Financial, products, animals, food, vehicles, books, and more across 12 categories
✅ Template Generator - Custom data patterns (SKUs, IDs, codes) with modifiers (upper, lower, title, trim, truncate)
✅ Interactive Schema Generator - Built-in generator with 10 pre-built templates
✅ Multi-Database Support - SQLite, MySQL, PostgreSQL, MariaDB, MS SQL Server, CockroachDB
✅ Foreign Key Relationships - Automatic FK resolution
✅ Unique Value Generation - Guaranteed unique values for unique columns
✅ Custom Generators - person, user, random_from, template, etc.
✅ Range Support - integer, float, decimal generators with configurable min/max
✅ Progress Tracking - Real-time feedback on data generation
✅ High Performance - 10-50x faster than pure Python implementations

Performance

Dataset Python v2.0 Go Core Speedup
1K rows ~2.5s ~0.1s 25x ⚡
10K rows ~25s ~0.8s 31x ⚡
100K rows ~250s ~6s 42x ⚡

Architecture

golang/
├── main.go       # CLI entry point, flag parsing
├── schema.go     # JSON schema parsing and validation
├── database.go   # Database connection and operations
├── generator.go  # Fake data generation using gofakeit
├── populate.go   # Data population with FK resolution
└── go.mod        # Go dependencies

Dependencies

  • gofakeit/v7 - Comprehensive fake data generation
  • go-sqlite3 - SQLite driver (CGO)
  • go-mysql-driver - MySQL driver (also used for MariaDB)
  • lib/pq - PostgreSQL driver (also used for CockroachDB)
  • go-mssqldb - Microsoft SQL Server driver
  • golang.org/x/text - Unicode handling for title casing

Development

Run tests:

go test -v ./...
go test -race ./...
go test -cover ./...

Format code:

go fmt ./...

Lint:

golangci-lint run

Integration

This Go binary is called by:

  • Python wrapper (python/fakestack/runner.py) via subprocess
  • Node.js wrapper (node/src/index.ts) via child_process

Wrappers detect platform, select appropriate binary, and execute with same CLI flags.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL