|
- <%
- '=======================================================================================================================
- ' MIGRATION: seed_sample_boards_and_layout
- '=======================================================================================================================
-
- Sub Migration_Up(migration)
- Call EnsureBoardWithLayout(migration, "Website Redesign", "website-redesign", "sample.seed")
- Call EnsureBoardWithLayout(migration, "Q3 Launch Plan", "q3-launch-plan", "sample.seed")
- End Sub
-
- Sub Migration_Down(migration)
- Call DbExecute(migration, "DELETE FROM [swim_lanes] WHERE [created_by] = ?", Array("sample.seed"))
- Call DbExecute(migration, "DELETE FROM [board_columns] WHERE [created_by] = ?", Array("sample.seed"))
- Call DbExecute(migration, "DELETE FROM [boards] WHERE [created_by] = ?", Array("sample.seed"))
- End Sub
-
- Private Sub EnsureBoardWithLayout(migration, boardName, boardSlug, seedUser)
- Dim boardId
- boardId = GetBoardIdBySlug(migration, boardSlug)
-
- If boardId = 0 Then
- Call DbExecute(migration, _
- "INSERT INTO [boards] ([name],[slug],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?)", _
- Array(boardName, boardSlug, Now(), seedUser, Now(), seedUser))
-
- boardId = GetBoardIdBySlug(migration, boardSlug)
- End If
-
- If boardId > 0 Then
- Call EnsureColumn(migration, boardId, "Backlog", 0, seedUser)
- Call EnsureColumn(migration, boardId, "In Progress", 1, seedUser)
- Call EnsureColumn(migration, boardId, "Review", 2, seedUser)
- Call EnsureColumn(migration, boardId, "Done", 3, seedUser)
-
- Call EnsureSwimLane(migration, boardId, "Expedite", 0, seedUser)
- Call EnsureSwimLane(migration, boardId, "Standard", 1, seedUser)
- Call EnsureSwimLane(migration, boardId, "Blocked", 2, seedUser)
- End If
- End Sub
-
- Private Sub EnsureColumn(migration, boardId, columnName, columnPosition, seedUser)
- If GetColumnIdByName(migration, boardId, columnName) = 0 Then
- Call DbExecute(migration, _
- "INSERT INTO [board_columns] ([board_id],[name],[position],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?,?)", _
- Array(boardId, columnName, columnPosition, Now(), seedUser, Now(), seedUser))
- End If
- End Sub
-
- Private Sub EnsureSwimLane(migration, boardId, laneName, lanePosition, seedUser)
- If GetSwimLaneIdByName(migration, boardId, laneName) = 0 Then
- Call DbExecute(migration, _
- "INSERT INTO [swim_lanes] ([board_id],[name],[position],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?,?)", _
- Array(boardId, laneName, lanePosition, Now(), seedUser, Now(), seedUser))
- End If
- End Sub
-
- Private Function GetBoardIdBySlug(migration, boardSlug)
- Dim rs
- Set rs = DbQuery(migration, "SELECT TOP 1 [id] FROM [boards] WHERE [slug] = ?", Array(boardSlug))
- If rs.EOF Then
- GetBoardIdBySlug = 0
- Else
- GetBoardIdBySlug = CLng(rs(0))
- End If
- Call CloseRecordset(rs)
- End Function
-
- Private Function GetColumnIdByName(migration, boardId, columnName)
- Dim rs
- Set rs = DbQuery(migration, "SELECT TOP 1 [id] FROM [board_columns] WHERE [board_id] = ? AND [name] = ?", Array(boardId, columnName))
- If rs.EOF Then
- GetColumnIdByName = 0
- Else
- GetColumnIdByName = CLng(rs(0))
- End If
- Call CloseRecordset(rs)
- End Function
-
- Private Function GetSwimLaneIdByName(migration, boardId, laneName)
- Dim rs
- Set rs = DbQuery(migration, "SELECT TOP 1 [id] FROM [swim_lanes] WHERE [board_id] = ? AND [name] = ?", Array(boardId, laneName))
- If rs.EOF Then
- GetSwimLaneIdByName = 0
- Else
- GetSwimLaneIdByName = CLng(rs(0))
- End If
- Call CloseRecordset(rs)
- End Function
-
- Private Sub CloseRecordset(ByRef rs)
- If IsObject(rs) Then
- If Not rs Is Nothing Then
- On Error Resume Next
- rs.Close
- Set rs = Nothing
- On Error GoTo 0
- End If
- End If
- End Sub
-
- Private Sub DbExecute(migration, sql, params)
- On Error Resume Next
- migration.DB.Execute sql, params
- If Err.Number = 0 Then
- On Error GoTo 0
- Exit Sub
- End If
- Err.Clear
- On Error GoTo 0
-
- Dim conn, cmd
- Set conn = migration.Connection
- Set cmd = CreateObject("ADODB.Command")
- Set cmd.ActiveConnection = conn
- cmd.CommandText = sql
-
- If IsArray(params) Then
- cmd.Execute , params
- ElseIf IsEmpty(params) Then
- cmd.Execute
- Else
- cmd.Execute , Array(params)
- End If
-
- Set cmd = Nothing
- End Sub
-
- Private Function DbQuery(migration, sql, params)
- On Error Resume Next
- Set DbQuery = migration.DB.Query(sql, params)
- If Err.Number = 0 Then
- On Error GoTo 0
- Exit Function
- End If
- Err.Clear
- On Error GoTo 0
-
- Dim conn, cmd, rs
- Set conn = migration.Connection
- Set cmd = CreateObject("ADODB.Command")
- Set cmd.ActiveConnection = conn
- cmd.CommandText = sql
-
- If IsArray(params) Then
- Set rs = cmd.Execute(, params)
- ElseIf IsEmpty(params) Then
- Set rs = cmd.Execute()
- Else
- Set rs = cmd.Execute(, Array(params))
- End If
-
- Set DbQuery = rs
- Set cmd = Nothing
- End Function
- %>
|