cloudfoundry-incubator/stratos

View on GitHub
src/jetstream/plugins/monocular/20200819184800_ChartStore.go

Summary

Maintainability
A
0 mins
Test Coverage
package monocular

import (
    "database/sql"

    "bitbucket.org/liamstask/goose/lib/goose"

    "github.com/cloudfoundry-incubator/stratos/src/jetstream/datastore"
)

func init() {
    datastore.RegisterMigration(20200819184800, "HelmChartStore", func(txn *sql.Tx, conf *goose.DBConf) error {

        // This is a dupe of 20190307115301. After the kube upstreaming process it was skipped during upstream upgrades
        createChartsTable := "CREATE TABLE IF NOT EXISTS helm_charts ("
        createChartsTable += "endpoint            VARCHAR(64)  NOT NULL,"
        createChartsTable += "name                VARCHAR(255) NOT NULL,"
        createChartsTable += "repo_name           VARCHAR(255) NOT NULL,"
        createChartsTable += "version             VARCHAR(64)  NOT NULL,"
        createChartsTable += "created             TIMESTAMP    NOT NULL,"
        createChartsTable += "app_version         VARCHAR(64)  NOT NULL,"
        createChartsTable += "description         VARCHAR(255) NOT NULL,"
        createChartsTable += "icon_url            VARCHAR(255) NOT NULL,"
        createChartsTable += "chart_url           VARCHAR(255) NOT NULL,"
        createChartsTable += "source_url          VARCHAR(255) NOT NULL,"
        createChartsTable += "digest              VARCHAR(64)  NOT NULL,"
        createChartsTable += "is_latest           BOOLEAN      NOT NULL DEFAULT FALSE,"
        createChartsTable += "update_batch        VARCHAR(64)  NOT NULL,"
        createChartsTable += "PRIMARY KEY (endpoint, name, version) );"

        _, err := txn.Exec(createChartsTable)
        if err != nil {
            return err
        }

        createIndex := "CREATE INDEX helm_charts_endpoint ON helm_charts (endpoint, name, version);"
        _, err = txn.Exec(createIndex)
        if err != nil {
            return err
        }

        createRepoIndex := "CREATE INDEX helm_charts_repository ON helm_charts (name, repo_name, version);"
        _, err = txn.Exec(createRepoIndex)
        if err != nil {
            return err
        }

        return nil
    })
}