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
| Flag | Default | Description |
|---|---|---|
--fresh | false | Drop all tables, re-run all migrations, then seed |
Examples
Run all seeders:
gofasta seedDrop all tables, re-run migrations, and seed from scratch:
gofasta seed --freshHow 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:
| Seeder | Description |
|---|---|
roles_seeder.go | Creates default roles (admin, user, moderator) |
permissions_seeder.go | Creates default RBAC permissions |
users_seeder.go | Creates 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.
Related
- gofasta migrate — run database migrations
- gofasta new — create a new project with default seeders
- Quick Start