bffa6499b7
created table layer_namespace to store the many to many unique mapping of layers and namespaces changed v1 api to provide a list of namespaces for each layer changed namespace detector to use all registered detectors to detect namespaces updated tests for multiple namespaces Fixes #150
45 lines
1.7 KiB
Go
45 lines
1.7 KiB
Go
// Copyright 2016 clair authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package migrations
|
|
|
|
import "github.com/remind101/migrate"
|
|
|
|
func init() {
|
|
RegisterMigration(migrate.Migration{
|
|
ID: 8,
|
|
Up: migrate.Queries([]string{
|
|
// set on deletion, remove the corresponding rows in database
|
|
`CREATE TABLE IF NOT EXISTS Layer_Namespace(
|
|
id SERIAL PRIMARY KEY,
|
|
layer_id INT REFERENCES Layer(id) ON DELETE CASCADE,
|
|
namespace_id INT REFERENCES Namespace(id) ON DELETE CASCADE,
|
|
unique(layer_id, namespace_id)
|
|
);`,
|
|
`CREATE INDEX ON Layer_Namespace (namespace_id);`,
|
|
`CREATE INDEX ON Layer_Namespace (layer_id);`,
|
|
// move the namespace_id to the table
|
|
`INSERT INTO Layer_Namespace (layer_id, namespace_id) SELECT id, namespace_id FROM Layer;`,
|
|
// alter the Layer table to remove the column
|
|
`ALTER TABLE IF EXISTS Layer DROP namespace_id;`,
|
|
}),
|
|
Down: migrate.Queries([]string{
|
|
`ALTER TABLE IF EXISTS Layer ADD namespace_id INT NULL REFERENCES Namespace;`,
|
|
`CREATE INDEX ON Layer (namespace_id);`,
|
|
`UPDATE IF EXISTS Layer SET namespace_id = (SELECT lns.namespace_id FROM Layer_Namespace lns WHERE Layer.id = lns.layer_id LIMIT 1);`,
|
|
`DROP TABLE IF EXISTS Layer_Namespace;`,
|
|
}),
|
|
})
|
|
}
|