# snowflake-liquibase-boilerplate


## Installation

### Install mvn
```
brew install mvn
```

### Create DATABSECHANGELOG & DATABASECHANGELOGLOCK
These must be created manually bc liquibase's automated table creation
creates the wrong TIMESTAMP type.

```
CREATE TABLE DATABASECHANGELOG (
    ID VARCHAR(255) NOT NULL,
    AUTHOR VARCHAR(255) NOT NULL,
    FILENAME VARCHAR(255) NOT NULL,
    DATEEXECUTED TIMESTAMP_LTZ(9) NOT NULL,
    ORDEREXECUTED NUMBER(38,0) NOT NULL,
    EXECTYPE VARCHAR(10) NOT NULL,
    MD5SUM VARCHAR(35),
    DESCRIPTION VARCHAR(255),
    COMMENTS VARCHAR(255),
    TAG VARCHAR(255),
    LIQUIBASE VARCHAR(20),
    CONTEXTS VARCHAR(255),
    LABELS VARCHAR(255),
    DEPLOYMENT_ID VARCHAR(10)
);

CREATE TABLE DATABASECHANGELOGLOCK (
    ID NUMBER(38,0) NOT NULL,
    LOCKED BOOLEAN NOT NULL,
    LOCKGRANTED TIMESTAMP_NTZ(9),
    LOCKEDBY VARCHAR(255),
    constraint PK_DATABASECHANGELOGLOCK primary key (ID)
);
```

## Deploy

### DB Deploy DDL

#### Execute
```
cd DEV_ENGINEERING/build
mvn initialize liquibase:update -DchangeLogFile=changelog/ddl/JIRA-5468_CREATE_test_table.sql
```

#### Rollback
```
cd DEV_ENGINEERING/build
mvn initialize liquibase:rollback -DchangeLogFile=changelog/ddl/JIRA-5468_CREATE_test_table.sql -Dliquibase.rollbackCount=1
```

### DB Deploy DML

#### Execute
```
cd DEV_ENGINEERING/build
mvn initialize liquibase:update -DchangeLogFile=changelog/dml/JIRA-5468_INSERT_test_table.sql
```

#### Rollback
```
cd DEV_ENGINEERING/build
mvn initialize liquibase:rollback -DchangeLogFile=changelog/dml/JIRA-5468_INSERT_test_table.sql -Dliquibase.rollbackCount=1
```

## Jenkins Setup

See tools/bash/execute_jenkins.sh for shell script to run within Jenkins

See tools/jenkins_params.png for suggested Jenkins params
