Skip to Content

gofasta seed

Runs the database seeder files located in db/seeders/ 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

FlagShortDefaultDescription
--env-edevelopmentEnvironment to use for database connection
--freshfalseDrop all tables and re-run all migrations before seeding
--file-fallRun a specific seeder file only

Examples

Run all seeders:

gofasta seed

Run seeders against the staging database:

gofasta seed --env staging

Run only a specific seeder file:

gofasta seed --file users

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

gofasta seed --fresh

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