ASP Classic blog framework - BrainOrdure
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

180 lines
7.2KB

  1. <%
  2. ' Auto-generated Repository for table [Comments]
  3. ' Generated on 5/2/2026 9:48:12 PM
  4. ' Generator: GenerateRepo.vbs v1.0
  5. '
  6. ' Dependencies:
  7. ' - core/lib.DAL.asp (DAL singleton for database access)
  8. ' - core/lib.AutoMapper.asp (Automapper for object mapping)
  9. ' - core/lib.Collections.asp (LinkedList_Class)
  10. ' - core/lib.helpers.asp (KVUnzip, BuildOrderBy, QI, Destroy)
  11. Class CommentsRepository_Class
  12. Public Function FindByID(id)
  13. Dim sql : sql = "Select [AuthorEmail], [AuthorName], [Body], [CommentID], [CreatedDate], [IsApproved], [PostID] FROM [Comments] WHERE [CommentID] = ?"
  14. Dim rs : Set rs = DAL.Query(sql, Array(id))
  15. If rs.EOF Then
  16. Err.Raise 1, "CommentsRepository_Class", RecordNotFoundException("CommentID", id)
  17. Else
  18. Set FindByID = Automapper.AutoMap(rs, "POBO_Comments")
  19. End If
  20. Destroy rs
  21. End Function
  22. Public Function GetAll(orderBy)
  23. Set GetAll = Find(Empty, orderBy)
  24. End Function
  25. Public Function Find(where_kvarray, order_string_or_array)
  26. Dim sql : sql = "Select [AuthorEmail], [AuthorName], [Body], [CommentID], [CreatedDate], [IsApproved], [PostID] FROM [Comments]"
  27. Dim where_keys, where_values, i
  28. where_values = Empty
  29. If Not IsEmpty(where_kvarray) Then
  30. KVUnzip where_kvarray, where_keys, where_values
  31. If Not IsEmpty(where_keys) Then
  32. sql = sql & " WHERE "
  33. For i = 0 To UBound(where_keys)
  34. If i > 0 Then sql = sql & " AND "
  35. sql = sql & " " & QI(where_keys(i)) & " = ?"
  36. Next
  37. End If
  38. End If
  39. sql = sql & BuildOrderBy(order_string_or_array, "[CommentID]")
  40. Dim rs : Set rs = DAL.Query(sql, where_values)
  41. Dim list : Set list = new LinkedList_Class
  42. Do Until rs.EOF
  43. list.Push Automapper.AutoMap(rs, "POBO_Comments")
  44. rs.MoveNext
  45. Loop
  46. Set Find = list
  47. Destroy rs
  48. End Function
  49. Public Function FindPaged(where_kvarray, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count)
  50. Dim sql : sql = "Select [AuthorEmail], [AuthorName], [Body], [CommentID], [CreatedDate], [IsApproved], [PostID] FROM [Comments]"
  51. Dim where_keys, where_values, i
  52. where_values = Empty
  53. If Not IsEmpty(where_kvarray) Then
  54. KVUnzip where_kvarray, where_keys, where_values
  55. If Not IsEmpty(where_keys) Then
  56. sql = sql & " WHERE "
  57. For i = 0 To UBound(where_keys)
  58. If i > 0 Then sql = sql & " AND "
  59. sql = sql & " " & QI(where_keys(i)) & " = ?"
  60. Next
  61. End If
  62. End If
  63. sql = sql & BuildOrderBy(order_string_or_array, "[CommentID]")
  64. Dim rs : Set rs = DAL.PagedQuery(sql, where_values, per_page, page_num)
  65. If Not rs.EOF Then
  66. rs.PageSize = per_page
  67. rs.AbsolutePage = page_num
  68. page_count = rs.PageCount
  69. record_count = rs.RecordCount
  70. End If
  71. Set FindPaged = PagedList(rs, per_page)
  72. Destroy rs
  73. End Function
  74. Public Function SearchTablePaged(columns_array, search_value, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count)
  75. Dim sql : sql = "Select [AuthorEmail], [AuthorName], [Body], [CommentID], [CreatedDate], [IsApproved], [PostID] FROM [Comments]"
  76. Dim i, params()
  77. params = Empty
  78. If IsArray(columns_array) And UBound(columns_array) >= 0 Then
  79. sql = sql & " WHERE "
  80. ReDim params(UBound(columns_array))
  81. For i = 0 To UBound(columns_array)
  82. If i > 0 Then sql = sql & " OR "
  83. sql = sql & " " & QI(columns_array(i)) & " LIKE ?"
  84. params(i) = "%" & search_value & "%"
  85. Next
  86. End If
  87. sql = sql & BuildOrderBy(order_string_or_array, "[CommentID]")
  88. Dim rs : Set rs = DAL.PagedQuery(sql, params, per_page, page_num)
  89. If Not rs.EOF Then
  90. rs.PageSize = per_page
  91. rs.AbsolutePage = page_num
  92. page_count = rs.PageCount
  93. record_count = rs.RecordCount
  94. End If
  95. Set SearchTablePaged = PagedList(rs, per_page)
  96. Destroy rs
  97. End Function
  98. Private Function PagedList(rs, per_page)
  99. Dim list : Set list = new LinkedList_Class
  100. Dim x : x = 0
  101. Do While (per_page <= 0 Or x < per_page) And Not rs.EOF
  102. list.Push Automapper.AutoMap(rs, "POBO_Comments")
  103. x = x + 1
  104. rs.MoveNext
  105. Loop
  106. Set PagedList = list
  107. End Function
  108. Public Sub AddNew(ByRef model)
  109. Dim sql : sql = "INSERT INTO [Comments] ([AuthorEmail], [AuthorName], [Body], [CreatedDate], [IsApproved], [PostID]) VALUES (?, ?, ?, ?, ?, ?)"
  110. DAL.Execute sql, Array(model.AuthorEmail, model.AuthorName, model.Body, model.CreatedDate, model.IsApproved, model.PostID)
  111. ' Retrieve the newly inserted ID
  112. On Error Resume Next
  113. Dim rsId : Set rsId = DAL.Query("SELECT @@IDENTITY AS NewID", Empty)
  114. If Err.Number <> 0 Then
  115. ' Fallback for Access databases
  116. Err.Clear
  117. Set rsId = DAL.Query("SELECT TOP 1 [CommentID] FROM [Comments] ORDER BY [CommentID] DESC", Empty)
  118. End If
  119. On Error GoTo 0
  120. If Not rsId.EOF Then
  121. If Not IsNull(rsId(0)) Then model.CommentID = rsId(0)
  122. End If
  123. Destroy rsId
  124. End Sub
  125. Public Sub Update(model)
  126. Dim sql : sql = "UPDATE [Comments] SET [AuthorEmail] = ?, [AuthorName] = ?, [Body] = ?, [CreatedDate] = ?, [IsApproved] = ?, [PostID] = ? WHERE [CommentID] = ?"
  127. DAL.Execute sql, Array(model.AuthorEmail, model.AuthorName, model.Body, model.CreatedDate, model.IsApproved, model.PostID, model.CommentID)
  128. End Sub
  129. Public Sub Delete(id)
  130. Dim sql : sql = "DELETE FROM [Comments] WHERE [CommentID] = ?"
  131. DAL.Execute sql, Array(id)
  132. End Sub
  133. Private Function RecordNotFoundException(ByVal field_name, ByVal field_val)
  134. RecordNotFoundException = "Comments record was not found with " & field_name & " = '" & field_val & "'."
  135. End Function
  136. Private Function QI(name)
  137. QI = "[" & Replace(CStr(name), "]", "]]") & "]"
  138. End Function
  139. Private Function BuildOrderBy(orderArg, defaultCol)
  140. Dim s : s = ""
  141. If IsEmpty(orderArg) Or IsNull(orderArg) Or orderArg = "" Then
  142. s = " ORDER BY " & defaultCol & " ASC"
  143. ElseIf IsArray(orderArg) Then
  144. Dim i : s = " ORDER BY "
  145. For i = 0 To UBound(orderArg)
  146. If i > 0 Then s = s & ", "
  147. s = s & QI(orderArg(i))
  148. Next
  149. Else
  150. s = " ORDER BY " & QI(orderArg)
  151. End If
  152. BuildOrderBy = s
  153. End Function
  154. End Class
  155. Dim CommentsRepository__Singleton
  156. Function CommentsRepository()
  157. If IsEmpty(CommentsRepository__Singleton) Then
  158. Set CommentsRepository__Singleton = new CommentsRepository_Class
  159. End If
  160. Set CommentsRepository = CommentsRepository__Singleton
  161. End Function
  162. %>

Powered by TurnKey Linux.