db-migrator.go
64 строки · 1.4 Кб
1/**
2* This file is part of the raoptimus/db-migrator.go library
3*
4* @copyright Copyright (c) Evgeniy Urvantsev
5* @license https://github.com/raoptimus/db-migrator.go/blob/master/LICENSE.md
6* @link https://github.com/raoptimus/db-migrator.go
7*/
8
9package action
10
11import (
12"github.com/raoptimus/db-migrator.go/internal/args"
13"github.com/raoptimus/db-migrator.go/internal/console"
14"github.com/urfave/cli/v2"
15)
16
17const defaultGetHistoryLimit = 10
18
19type History struct {
20service MigrationService
21}
22
23func NewHistory(
24service MigrationService,
25) *History {
26return &History{
27service: service,
28}
29}
30
31func (h *History) Run(ctx *cli.Context) error {
32limit, err := args.ParseStepStringOrDefault(ctx.Args().Get(0), defaultGetHistoryLimit)
33if err != nil {
34return err
35}
36
37migrations, err := h.service.Migrations(ctx.Context, limit)
38if err != nil {
39return err
40}
41
42migrationsCount := migrations.Len()
43if migrationsCount == 0 {
44console.SuccessLn("No migration has been done before.")
45return nil
46}
47
48if limit > 0 {
49console.Warnf(
50"Showing the last %d %s: \n",
51migrationsCount,
52console.NumberPlural(migrationsCount, "migration", "migrations"),
53)
54} else {
55console.Warnf(
56"Total %d %s been applied before: \n",
57migrationsCount,
58console.NumberPlural(migrationsCount, "migration has", "migrations have"),
59)
60}
61
62printMigrations(migrations, true)
63return nil
64}
65