Skip to Content

gofasta seed

Runs the database seeder files to populate your database with initial data. This is useful for setting up default roles, permissions, admin users, and sample data for development and testing.

Usage

gofasta seed [flags]

Run this command from the root directory of your Gofasta project.

Flags

FlagDefaultDescription
--freshfalseDrop all tables, re-run all migrations, then seed

Examples

Run all seeders:

gofasta seed

Drop all tables, re-run migrations, and seed from scratch:

gofasta seed --fresh

How It Works

The gofasta seed command delegates to:

go run ./app/main seed [--fresh]

When the --fresh flag is provided, it drops all tables, re-runs all migrations, and then executes the seeders.

Default Seeders

A newly generated Gofasta project includes the following seeders:

SeederDescription
roles_seeder.goCreates default roles (admin, user, moderator)
permissions_seeder.goCreates default RBAC permissions
users_seeder.goCreates an admin user with default credentials

Seeder File Structure

Seeders are Go files in db/seeders/ that implement the Seeder interface:

// db/seeders/users_seeder.go package seeders import ( "myapp/app/models" "gorm.io/gorm" ) type UsersSeeder struct{} func (s *UsersSeeder) Seed(db *gorm.DB) error { users := []models.User{ { Email: "admin@example.com", Name: "Admin User", Password: "hashed_password_here", RoleID: 1, }, } for _, user := range users { if err := db.FirstOrCreate(&user, models.User{Email: user.Email}).Error; err != nil { return err } } return nil } func (s *UsersSeeder) Order() int { return 3 // Controls execution order }

The Order() method determines the sequence in which seeders run. Lower numbers run first, which is important for satisfying foreign key constraints.

Last updated on