1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package catalog
- import (
- "fmt"
- "github.com/kyleconroy/sqlc/internal/sql/ast"
- "github.com/kyleconroy/sqlc/internal/sql/sqlerr"
- )
- func (c *Catalog) createSchema(stmt *ast.CreateSchemaStmt) error {
- if stmt.Name == nil {
- return fmt.Errorf("create schema: empty name")
- }
- if _, err := c.getSchema(*stmt.Name); err == nil {
- if !stmt.IfNotExists {
- return sqlerr.SchemaExists(*stmt.Name)
- }
- }
- c.Schemas = append(c.Schemas, &Schema{Name: *stmt.Name})
- return nil
- }
- func (c *Catalog) dropSchema(stmt *ast.DropSchemaStmt) error {
- // TODO: n^2 in the worst-case
- for _, name := range stmt.Schemas {
- idx := -1
- for i := range c.Schemas {
- if c.Schemas[i].Name == name.Str {
- idx = i
- }
- }
- if idx == -1 {
- if stmt.MissingOk {
- continue
- }
- return sqlerr.SchemaNotFound(name.Str)
- }
- c.Schemas = append(c.Schemas[:idx], c.Schemas[idx+1:]...)
- }
- return nil
- }
|