Skip to content

Commit

Permalink
Alter table primary key
Browse files Browse the repository at this point in the history
  • Loading branch information
emosbaugh committed Aug 8, 2019
1 parent ed4cc33 commit 5269c6e
Show file tree
Hide file tree
Showing 59 changed files with 1,153 additions and 186 deletions.
12 changes: 7 additions & 5 deletions Dockerfile.schemahero
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,23 @@ FROM golang:1.12 as builder

# Copy in the go src
WORKDIR /go/src/github.com/schemahero/schemahero
COPY pkg/ pkg/
COPY cmd/ cmd/
COPY go.mod ./
COPY go.sum ./
COPY Makefile ./

# Download vendored deps
ENV GO111MODULE=on
RUN go mod vendor

# Build
COPY pkg/ pkg/
COPY cmd/ cmd/
RUN make bin/schemahero


# Copy schemahero into a thin image
FROM debian:buster
WORKDIR /
COPY --from=builder /go/src/github.com/schemahero/schemahero/bin/schemahero .


RUN apt-get update \
&& apt-get -y install \
Expand All @@ -31,8 +32,9 @@ RUN set -eux; \
# verify that the binary works
gosu nobody true

COPY --from=builder /go/src/github.com/schemahero/schemahero/bin/schemahero .

COPY deploy/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh

ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

1 change: 1 addition & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,7 @@ golang.org/x/tools v0.0.0-20190501045030-23463209683d/go.mod h1:RgjU9mgBXZiqYHBn
gomodules.xyz/jsonpatch/v2 v2.0.0 h1:OyHbl+7IOECpPKfVK42oFr6N7+Y2dR+Jsb/IiDV3hOo=
gomodules.xyz/jsonpatch/v2 v2.0.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU=
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
google.golang.org/appengine v1.1.0 h1:igQkv0AAhEIvTEpD5LIpAfav2eeVO9HBTjvKHVJPRSs=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c=
Expand Down
13 changes: 11 additions & 2 deletions integration/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

SHELL := /bin/bash
IMAGE := "ttl.sh/$(shell uuidgen | tr '[:upper:]' '[:lower:]'):1h"

export IMAGE
export GO111MODULE=on

Expand All @@ -16,6 +17,8 @@ postgres: build
make -C tests/postgres/foreign-key-alter run
make -C tests/postgres/not-null run
make -C tests/postgres/index-create run
make -C tests/postgres/primary-key-add run
make -C tests/postgres/primary-key-drop run

.PHONY: mysql
mysql: build
Expand All @@ -26,8 +29,14 @@ mysql: build
make -C tests/mysql/foreign-key-alter run
make -C tests/mysql/not-null run
make -C tests/mysql/index-create run
make -C tests/mysql/primary-key-add run
make -C tests/mysql/primary-key-drop run

.PHONY: build
build:
docker build -t $(IMAGE) -f ../Dockerfile.schemahero ..
build: docker-build
docker push $(IMAGE)

.PHONY: docker-build
docker-build:
docker build -t $(IMAGE) -f ../Dockerfile.schemahero ..
@echo "export IMAGE=$(IMAGE)"
16 changes: 9 additions & 7 deletions integration/tests/mysql/create-table/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ SHELL := /bin/bash
TEST_NAME := mysql-create-table
DATABASE_IMAGE_NAME := schemahero/database
DATABASE_CONTAINER_NAME := database
DRIVER := mysql
URI := schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false
SPEC_FILE := /specs/users.yaml

.PHONY: run
run:
Expand All @@ -17,7 +20,7 @@ run:
docker build -t $(DATABASE_IMAGE_NAME) .
@-docker rm -f $(DATABASE_CONTAINER_NAME) > /dev/null 2>&1 ||:
docker run --network $(TEST_NAME) --rm -d --name $(DATABASE_CONTAINER_NAME) $(DATABASE_IMAGE_NAME)
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -hlocalhost --silent; do sleep 30; done
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -h$(DATABASE_CONTAINER_NAME) --silent; do sleep 1; done

# Test
docker tag $(IMAGE) schemahero/schemahero:test
Expand All @@ -27,9 +30,9 @@ run:
--rm \
schemahero/schemahero:test \
apply \
--driver mysql \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false" \
--spec-file /specs/users.yaml
--driver $(DRIVER) \
--uri "$(URI)" \
--spec-file $(SPEC_FILE)

# Verify
docker run \
Expand All @@ -41,9 +44,9 @@ run:
generate \
--dbname schemahero \
--namespace default \
--driver mysql \
--driver $(DRIVER) \
--output-dir /out \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false"
--uri "$(URI)"
@echo Verifying results for $(TEST_NAME)
diff expect out

Expand All @@ -52,4 +55,3 @@ run:
rm -rf ./out
@-docker rm -f $(DATABASE_CONTAINER_NAME)
@-docker network rm $(TEST_NAME)

16 changes: 9 additions & 7 deletions integration/tests/mysql/foreign-key-action/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ SHELL := /bin/bash
TEST_NAME := mysql-foreign-key-action
DATABASE_IMAGE_NAME := schemahero/database
DATABASE_CONTAINER_NAME := database
DRIVER := mysql
URI := schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false
SPEC_FILE := /specs/user-project.yaml

.PHONY: run
run:
Expand All @@ -17,7 +20,7 @@ run:
docker build -t $(DATABASE_IMAGE_NAME) .
@-docker rm -f $(DATABASE_CONTAINER_NAME) > /dev/null 2>&1 ||:
docker run --network $(TEST_NAME) --rm -d --name $(DATABASE_CONTAINER_NAME) $(DATABASE_IMAGE_NAME)
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -hlocalhost --silent; do sleep 30; done
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -h$(DATABASE_CONTAINER_NAME) --silent; do sleep 1; done

# Test
docker tag $(IMAGE) schemahero/schemahero:test
Expand All @@ -27,9 +30,9 @@ run:
--rm \
schemahero/schemahero:test \
apply \
--driver mysql \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false" \
--spec-file /specs/user-project.yaml
--driver $(DRIVER) \
--uri "$(URI)" \
--spec-file $(SPEC_FILE)

# Verify
docker run \
Expand All @@ -41,9 +44,9 @@ run:
generate \
--dbname schemahero \
--namespace default \
--driver mysql \
--driver $(DRIVER) \
--output-dir /out \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false"
--uri "$(URI)"
@echo Verifying results for $(TEST_NAME)
diff expect out

Expand All @@ -52,4 +55,3 @@ run:
rm -rf ./out
@-docker rm -f $(DATABASE_CONTAINER_NAME)
@-docker network rm $(TEST_NAME)

Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ spec:
schema:
mysql:
primaryKey:
- project_id
- user_id
- project_id
foreignKeys:
- columns:
- misc_id
Expand Down
17 changes: 10 additions & 7 deletions integration/tests/mysql/foreign-key-alter/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ SHELL := /bin/bash
TEST_NAME := mysql-foreign-key-alter
DATABASE_IMAGE_NAME := schemahero/database
DATABASE_CONTAINER_NAME := database
DRIVER := mysql
URI := schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false
SPEC_FILE := /specs/issues.yaml

.PHONY: run
run:
Expand All @@ -17,7 +20,7 @@ run:
docker build -t $(DATABASE_IMAGE_NAME) .
@-docker rm -f $(DATABASE_CONTAINER_NAME) > /dev/null 2>&1 ||:
docker run --network $(TEST_NAME) --rm -d --name $(DATABASE_CONTAINER_NAME) $(DATABASE_IMAGE_NAME)
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -hlocalhost --silent; do sleep 30; done
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -h$(DATABASE_CONTAINER_NAME) --silent; do sleep 1; done

# Test
docker tag $(IMAGE) schemahero/schemahero:test
Expand All @@ -27,9 +30,10 @@ run:
--rm \
schemahero/schemahero:test \
apply \
--driver mysql \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false" \
--spec-file /specs/issues.yaml
--driver $(DRIVER) \
--uri "$(URI)" \
--spec-file $(SPEC_FILE)

# Verify
docker run \
--rm \
Expand All @@ -40,9 +44,9 @@ run:
generate \
--dbname schemahero \
--namespace default \
--driver mysql \
--driver $(DRIVER) \
--output-dir /out \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false"
--uri "$(URI)"
@echo Verifying results for $(TEST_NAME)
diff expect out

Expand All @@ -51,4 +55,3 @@ run:
rm -rf ./out
@-docker rm -f $(DATABASE_CONTAINER_NAME)
@-docker network rm $(TEST_NAME)

16 changes: 9 additions & 7 deletions integration/tests/mysql/foreign-key-create/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ SHELL := /bin/bash
TEST_NAME := mysql-foreign-key-create
DATABASE_IMAGE_NAME := schemahero/database
DATABASE_CONTAINER_NAME := database
DRIVER := mysql
URI := schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false
SPEC_FILE := /specs/user-project.yaml

.PHONY: run
run:
Expand All @@ -17,7 +20,7 @@ run:
docker build -t $(DATABASE_IMAGE_NAME) .
@-docker rm -f $(DATABASE_CONTAINER_NAME) > /dev/null 2>&1 ||:
docker run --network $(TEST_NAME) --rm -d --name $(DATABASE_CONTAINER_NAME) $(DATABASE_IMAGE_NAME)
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -hlocalhost --silent; do sleep 30; done
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -h$(DATABASE_CONTAINER_NAME) --silent; do sleep 1; done

# Test
docker tag $(IMAGE) schemahero/schemahero:test
Expand All @@ -27,9 +30,9 @@ run:
--rm \
schemahero/schemahero:test \
apply \
--driver mysql \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false" \
--spec-file /specs/user-project.yaml
--driver $(DRIVER) \
--uri "$(URI)" \
--spec-file $(SPEC_FILE)

# Verify
docker run \
Expand All @@ -41,9 +44,9 @@ run:
generate \
--dbname schemahero \
--namespace default \
--driver mysql \
--driver $(DRIVER) \
--output-dir /out \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false"
--uri "$(URI)"
@echo Verifying results for $(TEST_NAME)
diff expect out

Expand All @@ -52,4 +55,3 @@ run:
rm -rf ./out
@-docker rm -f $(DATABASE_CONTAINER_NAME)
@-docker network rm $(TEST_NAME)

Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ spec:
schema:
mysql:
primaryKey:
- project_id
- user_id
- project_id
foreignKeys:
- columns:
- misc_id
Expand Down
16 changes: 9 additions & 7 deletions integration/tests/mysql/foreign-key-drop/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ SHELL := /bin/bash
TEST_NAME := mysql-foreign-key-drop
DATABASE_IMAGE_NAME := schemahero/database
DATABASE_CONTAINER_NAME := database
DRIVER := mysql
URI := schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false
SPEC_FILE := /specs/org.yaml

.PHONY: run
run:
Expand All @@ -17,7 +20,7 @@ run:
docker build -t $(DATABASE_IMAGE_NAME) .
@-docker rm -f $(DATABASE_CONTAINER_NAME) > /dev/null 2>&1 ||:
docker run --network $(TEST_NAME) --rm -d --name $(DATABASE_CONTAINER_NAME) $(DATABASE_IMAGE_NAME)
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -hlocalhost --silent; do sleep 30; done
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -h$(DATABASE_CONTAINER_NAME) --silent; do sleep 1; done

# Test
docker tag $(IMAGE) schemahero/schemahero:test
Expand All @@ -27,9 +30,9 @@ run:
--rm \
schemahero/schemahero:test \
apply \
--driver mysql \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false" \
--spec-file /specs/org.yaml
--driver $(DRIVER) \
--uri "$(URI)" \
--spec-file $(SPEC_FILE)

# Verify
docker run \
Expand All @@ -41,9 +44,9 @@ run:
generate \
--dbname schemahero \
--namespace default \
--driver mysql \
--driver $(DRIVER) \
--output-dir /out \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false"
--uri "$(URI)"
@echo Verifying results for $(TEST_NAME)
diff expect out

Expand All @@ -52,4 +55,3 @@ run:
rm -rf ./out
@-docker rm -f $(DATABASE_CONTAINER_NAME)
@-docker network rm $(TEST_NAME)

16 changes: 9 additions & 7 deletions integration/tests/mysql/index-create/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ SHELL := /bin/bash
TEST_NAME := mysql-index-create
DATABASE_IMAGE_NAME := schemahero/database
DATABASE_CONTAINER_NAME := database
DRIVER := mysql
URI := schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false
SPEC_FILE := /specs/users.yaml

.PHONY: run
run:
Expand All @@ -17,7 +20,7 @@ run:
docker build -t $(DATABASE_IMAGE_NAME) .
@-docker rm -f $(DATABASE_CONTAINER_NAME) > /dev/null 2>&1 ||:
docker run --network $(TEST_NAME) --rm -d --name $(DATABASE_CONTAINER_NAME) $(DATABASE_IMAGE_NAME)
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -hlocalhost --silent; do sleep 30; done
while ! docker exec -it $(DATABASE_CONTAINER_NAME) mysqladmin ping -h$(DATABASE_CONTAINER_NAME) --silent; do sleep 1; done

# Test
docker tag $(IMAGE) schemahero/schemahero:test
Expand All @@ -27,9 +30,9 @@ run:
--rm \
schemahero/schemahero:test \
apply \
--driver mysql \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false" \
--spec-file /specs/users.yaml
--driver $(DRIVER) \
--uri "$(URI)" \
--spec-file $(SPEC_FILE)

# Verify
docker run \
Expand All @@ -41,9 +44,9 @@ run:
generate \
--dbname schemahero \
--namespace default \
--driver mysql \
--driver $(DRIVER) \
--output-dir /out \
--uri "schemahero:password@tcp($(DATABASE_CONTAINER_NAME):3306)/schemahero?tls=false"
--uri "$(URI)"
@echo Verifying results for $(TEST_NAME)
diff expect out

Expand All @@ -52,4 +55,3 @@ run:
rm -rf ./out
@-docker rm -f $(DATABASE_CONTAINER_NAME)
@-docker network rm $(TEST_NAME)

0 comments on commit 5269c6e

Please sign in to comment.