github.com/omnigres/cli@v0.1.4/cmd/revision_list.go (about)

     1  package cmd
     2  
     3  import (
     4  	"context"
     5  	"database/sql"
     6  	"fmt"
     7  	"github.com/charmbracelet/log"
     8  	"github.com/omnigres/cli/orb"
     9  	"github.com/spf13/cobra"
    10  	"os"
    11  )
    12  
    13  var revisionListCmd = &cobra.Command{
    14  	Use:   "list",
    15  	Short: "List revisions",
    16  	Run: func(cmd *cobra.Command, args []string) {
    17  		var cluster orb.OrbCluster
    18  		var err error
    19  		cluster, err = getOrbCluster()
    20  		if err != nil {
    21  			log.Fatal(err)
    22  		}
    23  
    24  		log.Debug("Workspace", "workspace", workspace)
    25  		cwd, err := os.Getwd()
    26  		if err != nil {
    27  			log.Fatal(err)
    28  		}
    29  
    30  		orbs, err := currentOrbs(cluster, cwd)
    31  		if err != nil {
    32  			log.Fatal(err)
    33  		}
    34  
    35  		ctx := context.Background()
    36  		log.Debug("List revisions in orbs", "orbs", orbs)
    37  		listRevisions(
    38  			ctx,
    39  			cluster,
    40  			dbReset,
    41  			orbs,
    42  			func(orbName string) string { return orbName },
    43  		)
    44  	},
    45  }
    46  
    47  func listRevisions(
    48  	ctx context.Context,
    49  	cluster orb.OrbCluster,
    50  	dbReset bool,
    51  	orbs []string,
    52  	databaseForOrb func(string) string,
    53  ) (err error) {
    54  	var db *sql.DB
    55  	db, err = cluster.Connect(ctx, "omnigres")
    56  	if err != nil {
    57  		log.Error("Could not connect to orb. Ensure the docker container is running, perhaps 'omnigres start' will fix it.")
    58  		return
    59  	}
    60  	for _, orbName := range orbs {
    61  		conn, err := db.Conn(ctx)
    62  		if err != nil {
    63  			log.Fatal(err)
    64  		}
    65  		defer conn.Close()
    66  		if err != nil {
    67  			log.Error(err)
    68  			return err
    69  		}
    70  
    71  		var rows *sql.Rows
    72  		rows, err = conn.QueryContext(
    73  			ctx,
    74  			`select revision from omni_schema.schema_revisions(omni_vfs.local_fs($1), 'revisions')`,
    75  			fmt.Sprintf("/mnt/host/%s", orbName),
    76  		)
    77  		if err != nil {
    78  			log.Error(err)
    79  			return err
    80  		}
    81  		var revision string
    82  		for rows.Next() {
    83  			err = rows.Scan(&revision)
    84  			fmt.Println(revision)
    85  		}
    86  
    87  	}
    88  	return
    89  }