You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
5.2KB

  1. <%
  2. '=======================================================================================================================
  3. ' MIGRATION: seed_sample_boards_and_layout
  4. '=======================================================================================================================
  5. Sub Migration_Up(migration)
  6. Call EnsureBoardWithLayout(migration, "Website Redesign", "website-redesign", "sample.seed")
  7. Call EnsureBoardWithLayout(migration, "Q3 Launch Plan", "q3-launch-plan", "sample.seed")
  8. End Sub
  9. Sub Migration_Down(migration)
  10. Call DbExecute(migration, "DELETE FROM [swim_lanes] WHERE [created_by] = ?", Array("sample.seed"))
  11. Call DbExecute(migration, "DELETE FROM [board_columns] WHERE [created_by] = ?", Array("sample.seed"))
  12. Call DbExecute(migration, "DELETE FROM [boards] WHERE [created_by] = ?", Array("sample.seed"))
  13. End Sub
  14. Private Sub EnsureBoardWithLayout(migration, boardName, boardSlug, seedUser)
  15. Dim boardId
  16. boardId = GetBoardIdBySlug(migration, boardSlug)
  17. If boardId = 0 Then
  18. Call DbExecute(migration, _
  19. "INSERT INTO [boards] ([name],[slug],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?)", _
  20. Array(boardName, boardSlug, Now(), seedUser, Now(), seedUser))
  21. boardId = GetBoardIdBySlug(migration, boardSlug)
  22. End If
  23. If boardId > 0 Then
  24. Call EnsureColumn(migration, boardId, "Backlog", 0, seedUser)
  25. Call EnsureColumn(migration, boardId, "In Progress", 1, seedUser)
  26. Call EnsureColumn(migration, boardId, "Review", 2, seedUser)
  27. Call EnsureColumn(migration, boardId, "Done", 3, seedUser)
  28. Call EnsureSwimLane(migration, boardId, "Expedite", 0, seedUser)
  29. Call EnsureSwimLane(migration, boardId, "Standard", 1, seedUser)
  30. Call EnsureSwimLane(migration, boardId, "Blocked", 2, seedUser)
  31. End If
  32. End Sub
  33. Private Sub EnsureColumn(migration, boardId, columnName, columnPosition, seedUser)
  34. If GetColumnIdByName(migration, boardId, columnName) = 0 Then
  35. Call DbExecute(migration, _
  36. "INSERT INTO [board_columns] ([board_id],[name],[position],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?,?)", _
  37. Array(boardId, columnName, columnPosition, Now(), seedUser, Now(), seedUser))
  38. End If
  39. End Sub
  40. Private Sub EnsureSwimLane(migration, boardId, laneName, lanePosition, seedUser)
  41. If GetSwimLaneIdByName(migration, boardId, laneName) = 0 Then
  42. Call DbExecute(migration, _
  43. "INSERT INTO [swim_lanes] ([board_id],[name],[position],[created_at],[created_by],[updated_at],[updated_by]) VALUES (?,?,?,?,?,?,?)", _
  44. Array(boardId, laneName, lanePosition, Now(), seedUser, Now(), seedUser))
  45. End If
  46. End Sub
  47. Private Function GetBoardIdBySlug(migration, boardSlug)
  48. Dim rs
  49. Set rs = DbQuery(migration, "SELECT TOP 1 [id] FROM [boards] WHERE [slug] = ?", Array(boardSlug))
  50. If rs.EOF Then
  51. GetBoardIdBySlug = 0
  52. Else
  53. GetBoardIdBySlug = CLng(rs(0))
  54. End If
  55. Call CloseRecordset(rs)
  56. End Function
  57. Private Function GetColumnIdByName(migration, boardId, columnName)
  58. Dim rs
  59. Set rs = DbQuery(migration, "SELECT TOP 1 [id] FROM [board_columns] WHERE [board_id] = ? AND [name] = ?", Array(boardId, columnName))
  60. If rs.EOF Then
  61. GetColumnIdByName = 0
  62. Else
  63. GetColumnIdByName = CLng(rs(0))
  64. End If
  65. Call CloseRecordset(rs)
  66. End Function
  67. Private Function GetSwimLaneIdByName(migration, boardId, laneName)
  68. Dim rs
  69. Set rs = DbQuery(migration, "SELECT TOP 1 [id] FROM [swim_lanes] WHERE [board_id] = ? AND [name] = ?", Array(boardId, laneName))
  70. If rs.EOF Then
  71. GetSwimLaneIdByName = 0
  72. Else
  73. GetSwimLaneIdByName = CLng(rs(0))
  74. End If
  75. Call CloseRecordset(rs)
  76. End Function
  77. Private Sub CloseRecordset(ByRef rs)
  78. If IsObject(rs) Then
  79. If Not rs Is Nothing Then
  80. On Error Resume Next
  81. rs.Close
  82. Set rs = Nothing
  83. On Error GoTo 0
  84. End If
  85. End If
  86. End Sub
  87. Private Sub DbExecute(migration, sql, params)
  88. On Error Resume Next
  89. migration.DB.Execute sql, params
  90. If Err.Number = 0 Then
  91. On Error GoTo 0
  92. Exit Sub
  93. End If
  94. Err.Clear
  95. On Error GoTo 0
  96. Dim conn, cmd
  97. Set conn = migration.Connection
  98. Set cmd = CreateObject("ADODB.Command")
  99. Set cmd.ActiveConnection = conn
  100. cmd.CommandText = sql
  101. If IsArray(params) Then
  102. cmd.Execute , params
  103. ElseIf IsEmpty(params) Then
  104. cmd.Execute
  105. Else
  106. cmd.Execute , Array(params)
  107. End If
  108. Set cmd = Nothing
  109. End Sub
  110. Private Function DbQuery(migration, sql, params)
  111. On Error Resume Next
  112. Set DbQuery = migration.DB.Query(sql, params)
  113. If Err.Number = 0 Then
  114. On Error GoTo 0
  115. Exit Function
  116. End If
  117. Err.Clear
  118. On Error GoTo 0
  119. Dim conn, cmd, rs
  120. Set conn = migration.Connection
  121. Set cmd = CreateObject("ADODB.Command")
  122. Set cmd.ActiveConnection = conn
  123. cmd.CommandText = sql
  124. If IsArray(params) Then
  125. Set rs = cmd.Execute(, params)
  126. ElseIf IsEmpty(params) Then
  127. Set rs = cmd.Execute()
  128. Else
  129. Set rs = cmd.Execute(, Array(params))
  130. End If
  131. Set DbQuery = rs
  132. Set cmd = Nothing
  133. End Function
  134. %>

Powered by TurnKey Linux.