# For MySQL, every statement ends with a `;\n` (that's a semicolon followed by # a newline), and it cannot parse the next if a new statement follows after an # indentation, like we normally write for other backends. So breaking apart the # requests into individual statements turned out to be the ergonomic way to make # this work. # # Also tried typical YAML multi-line (block) syntax in all combinations `|`, # `>` with `+` and `-`, including specification of the indentation levels with # numbers, without success. # # NOTE: For local development, if manual data seeding is ever necessary, we # maintain a `mysql-ddl-dml.sql` that should always remain in sync with this # file. type: bulk args: - type: mysql_run_sql args: source: mysql sql: | DROP TABLE IF EXISTS article; - type: mysql_run_sql args: source: mysql sql: | DROP TABLE IF EXISTS author; - type: mysql_run_sql args: source: mysql sql: | CREATE TABLE author ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(45) UNIQUE KEY, createdAt DATETIME ); - type: mysql_run_sql args: source: mysql sql: | INSERT INTO author (name, createdAt) VALUES ( 'Author 1', '2017-09-21 09:39:44' ), ( 'Author 2', '2017-09-21 09:50:44' ); - type: mysql_run_sql args: source: mysql sql: | CREATE TABLE article ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title TEXT, content TEXT, is_published BIT, published_on TIMESTAMP, author_id INT UNSIGNED, co_author_id INT UNSIGNED, FOREIGN KEY (author_id) REFERENCES author(id), FOREIGN KEY (co_author_id) REFERENCES author(id) ); - type: mysql_run_sql args: source: mysql sql: | INSERT INTO article (title, content, author_id, is_published) VALUES ( 'Article 1', 'Sample article content 1', 1, 0 ), ( 'Article 2', 'Sample article content 2', 1, 1 ), ( 'Article 3', 'Sample article content 3', 2, 1 ); # NOTE on dropping tables that have dependent views: # ref: https://dev.mysql.com/doc/refman/5.7/en/view-restrictions.html # # You can use DROP TABLE or ALTER TABLE to drop or alter a table that is used # in a view definition. No warning results from the DROP or ALTER operation, # even though this invalidates the view. Instead, an error occurs later, when # the view is used. CHECK TABLE can be used to check for views that have been # invalidated by DROP or ALTER operations. - type: mysql_run_sql args: source: mysql sql: | CREATE OR REPLACE VIEW search_author_view AS SELECT * FROM author;