157
}
158
159
>
func (client *cqlClient) DropAllTables() error {
cqlclient.go
160
>
return client.dropAllTablesTypes()
161
>
}
162
163
// CreateSchemaVersionTables sets up the schema version tables
164
>
func (client *cqlClient) CreateSchemaVersionTables() error {
cqlclient.go
165
>
if err := client.Exec(createSchemaVersionTableCQL); err != nil {
166
return err
167
}
168
>
return client.Exec(createSchemaUpdateHistoryTableCQL)
cqlclient.go
169
}
170
171
// ReadSchemaVersion returns the current schema version for the Keyspace
172
>
func (client *cqlClient) ReadSchemaVersion() (string, error) {
cqlclient.go
173
>
query := client.session.Query(readSchemaVersionCQL, client.keyspace)
174
>
175
>
iter := query.Iter()
176
>
var version string
177
>
success := iter.Scan(&version)
178
>
err := iter.Close()
179
>
if err == nil && !success {
180
err = fmt.Errorf("no schema version found for keyspace %q", client.keyspace)
181
}
183
>
return "", fmt.Errorf("unable to get current schema version from Cassandra: %w", err)
184
>
}
185
return version, nil
186
}
187
188
// UpdateShemaVersion updates the schema version for the Keyspace
189
>
func (client *cqlClient) UpdateSchemaVersion(newVersion string, minCompatibleVersion string) error {
cqlclient.go
190
>
query := client.session.Query(writeSchemaVersionCQL, client.keyspace, time.Now().UTC(), newVersion, minCompatibleVersion)
191
>
return query.Exec()
192
>
}
193
194
// WriteSchemaUpdateLog adds an entry to the schema update history table
195
>
func (client *cqlClient) WriteSchemaUpdateLog(oldVersion string, newVersion string, manifestMD5 string, desc string) error {
cqlclient.go
196
>
now := time.Now().UTC()
197
>
query := client.session.Query(writeSchemaUpdateHistoryCQL)
198
>
query.Bind(now.Year(), int(now.Month()), now, oldVersion, newVersion, manifestMD5, desc)
199
>
return query.Exec()
200
>
}
201
202
// Exec executes a cql statement