diff --git a/cmd/schemagen/schemagen.go b/cmd/schemagen/schemagen.go index c83e1fc..85875c7 100644 --- a/cmd/schemagen/schemagen.go +++ b/cmd/schemagen/schemagen.go @@ -20,14 +20,15 @@ import ( ) var ( - cmd = flag.NewFlagSet(os.Args[0], flag.ExitOnError) - flagCluster = cmd.String("cluster", "127.0.0.1", "a comma-separated list of host:port tuples") - flagKeyspace = cmd.String("keyspace", "", "keyspace to inspect") - flagPkgname = cmd.String("pkgname", "models", "the name you wish to assign to your generated package") - flagOutput = cmd.String("output", "models", "the name of the folder to output to") - flagUser = cmd.String("user", "", "user for password authentication") - flagPassword = cmd.String("password", "", "password for password authentication") - flagIgnoreNames = cmd.String("ignore-names", "", "a comma-separated list of table, view or index names to ignore") + cmd = flag.NewFlagSet(os.Args[0], flag.ExitOnError) + flagCluster = cmd.String("cluster", "127.0.0.1", "a comma-separated list of host:port tuples") + flagKeyspace = cmd.String("keyspace", "", "keyspace to inspect") + flagPkgname = cmd.String("pkgname", "models", "the name you wish to assign to your generated package") + flagOutput = cmd.String("output", "models", "the name of the folder to output to") + flagUser = cmd.String("user", "", "user for password authentication") + flagPassword = cmd.String("password", "", "password for password authentication") + flagIgnoreNames = cmd.String("ignore-names", "", "a comma-separated list of table, view or index names to ignore") + flagIgnoreIndexes = cmd.Bool("ignore-indexes", false, "don't generate types for indexes") ) var ( @@ -88,6 +89,13 @@ func renderTemplate(md *gocql.KeyspaceMetadata) ([]byte, error) { for _, ignoredName := range strings.Split(*flagIgnoreNames, ",") { ignoredNames[ignoredName] = struct{}{} } + if *flagIgnoreIndexes { + for name := range md.Tables { + if strings.HasSuffix(name, "_index") { + ignoredNames[name] = struct{}{} + } + } + } for name := range ignoredNames { delete(md.Tables, name) } diff --git a/cmd/schemagen/schemagen_test.go b/cmd/schemagen/schemagen_test.go index 2479c3c..44c5925 100644 --- a/cmd/schemagen/schemagen_test.go +++ b/cmd/schemagen/schemagen_test.go @@ -25,6 +25,8 @@ func TestSchemagen(t *testing.T) { "composers_by_name", "label", }, ",") + *flagIgnoreIndexes = true + b := runSchemagen(t, "foobar") const goldenFile = "testdata/models.go.txt" @@ -153,6 +155,11 @@ func createTestSchema(t *testing.T) { t.Fatal("create table:", err) } + err = session.ExecStmt(`CREATE INDEX IF NOT EXISTS songs_title ON schemagen.songs (title)`) + if err != nil { + t.Fatal("create index:", err) + } + err = session.ExecStmt(`CREATE TABLE IF NOT EXISTS schemagen.composers ( id uuid PRIMARY KEY, name text)`)