<% '======================================================================================================================= ' Settings Model '======================================================================================================================= Class SettingsModel_Class Public Validator Public Class_Get_Properties Public ID '90 Public Name '106 Public Value '106 Private Sub Class_Initialize 'ValidateExitsts Me, "","" Class_Get_Properties = Array("ID, Name, Value") End Sub End CLass '======================================================================================================================= ' Settings Repository '======================================================================================================================= Class SettingsRepository_Class Public Function FindByID(ID) dim sql : sql = "Select [ID], [Name], [Value] FROM [Settings] WHERE ID = ?" dim rs : set rs = DAL.Query(sql,ID) If rs.EOF then Err.Raise 1, "SettingsRepository_Class", SettingsNotFoundException("ID", ID) Else set FindByID = Automapper.AutoMap(rs,"SettingsModel_Class") End If End Function Public Function GetAll(orderBy) set GetAll = Find(empty,orderBy) End Function Public Function Find(where_kvarray, order_string_or_array) dim sql : sql = "Select [ID], [Name], [Value] FROM [Settings]" If Not IsEmpty(where_kvarray) then sql = sql & " WHERE " dim where_keys, where_values KVUnzip where_kvarray, where_keys, where_values dim i For i = 0 to UBound(where_keys) If i > 0 then sql = sql & " AND " sql = sql & " " & where_keys(i) & " " Next End If If Not IsEmpty(order_string_or_array) then sql = sql & "ORDER BY " If IsArray(order_string_or_array) then dim order_array : order_array = order_string_or_array For i = 0 to UBound(order_array) If i > 0 then sql = sql & ", " sql = sql & " " & order_array(i) Next Else sql = sql & order_string_or_array & " " End If End If dim rs : set rs = DAL.Query(sql, where_values) set Find = SettingsList(rs) Destroy rs End Function Public Function FindPaged(where_kvarray, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count) dim sql : sql = "Select [ID], [Name], [Value] FROM [Settings]" If Not IsEmpty(where_kvarray) then sql = sql & " WHERE " dim where_keys, where_values KVUnzip where_kvarray, where_keys, where_values dim i For i = 0 to UBound(where_keys) If i > 0 then sql = sql & " AND " sql = sql & " " & where_keys(i) & " " Next End If If Not IsEmpty(order_string_or_array) then sql = sql & "ORDER BY " If IsArray(order_string_or_array) then dim order_array : order_array = order_string_or_array For i = 0 to UBound(order_array) If i > 0 then sql = sql & ", " sql = sql & " " & order_array(i) Next Else sql = sql & order_string_or_array & " " End If End If dim list : set list = new LinkedList_Class dim rs : set rs = DAL.PagedQuery(sql, where_values, per_page, page_num) If Not rs.EOF and Not (IsEmpty(per_page) and IsEmpty(page_num) and IsEmpty(page_count) and IsEmpty(record_count)) then rs.PageSize = per_page rs.AbsolutePage = page_num page_count = rs.PageCount record_count = rs.RecordCount End If set FindPaged = PagedSettingsList(rs, per_page) Destroy rs End Function Public Function SearchTablePaged(where_kvarray, order_string_or_array, per_page, page_num, ByRef page_count, ByRef record_count) dim sql : sql = "Select [ID], [Name], [Value] FROM [Settings]" If Not IsEmpty(where_kvarray) then sql = sql & " WHERE " dim where_keys, where_values KVUnzip where_kvarray, where_keys, where_values dim i For i = 0 to UBound(where_keys) If i > 0 then sql = sql & " OR" sql = sql & " " & where_keys(i) & " LIKE ?" Next End If If Not IsEmpty(order_string_or_array) then sql = sql & " ORDER BY " If IsArray(order_string_or_array) then dim order_array : order_array = order_string_or_array For i = 0 to UBound(order_array) If i > 0 then sql = sql & ", " sql = sql & " " & order_array(i) Next Else sql = sql & order_string_or_array & " " End If End If dim list : set list = new LinkedList_Class dim rs : set rs = DAL.PagedQuery(sql, where_values, per_page, page_num) If Not rs.EOF and Not (IsEmpty(per_page) and IsEmpty(page_num) and IsEmpty(page_count) and IsEmpty(record_count)) then rs.PageSize = per_page rs.AbsolutePage = page_num page_count = rs.PageCount record_count = rs.RecordCount End If set SearchTablePaged = PagedSettingsList(rs, per_page) Destroy rs End Function Private Function PagedSettingsList(rs, per_page) dim list : set list = new LinkedList_Class dim x : x =0 Do While x < per_page and Not rs.EOF list.Push Automapper.AutoMap(rs, new SettingsModel_Class) x = x +1 rs.MoveNext Loop set PagedSettingsList = list End Function Private Function SettingsNotFoundException(ByVal field_name, ByVal field_val) SettingsNotFoundException = "Settings was not found with " & field_name & " of '" & field_val & "'." End Function Private Function SettingsList(rs) dim list : set list = new LinkedList_Class dim model Do until rs.EOF set model = new SettingsModel_Class list.Push Automapper.AutoMap(rs, model) rs.MoveNext Loop set SettingsList = list End Function Public Sub AddNew(ByRef model) dim sql : sql = "INSERT INTO [Settings] (" &_ "[Name]," &_ "[Value])" &_ "VALUES (?,?)" DAL.Execute sql, Array(model.Name, _ model.Value) sql = "SELECT TOP 1 ID FROM [Settings] ORDER BY ID DESC" dim rs : set rs = DAL.Query(sql, empty) model.ID = rs("ID") Destroy rs End Sub Public Sub Update(model) dim sql : sql = "UPDATE [Settings] SET [Name] = ?," &_ "[Value] = ?" &_ " WHERE [ID] = ?" DAL.Execute sql, Array(model.Name, _ model.Value, _ model.ID) End Sub Public Sub Delete(id) dim sql : sql = "DELETE FROM [Settings] WHERE [ID] = ?" DAL.Execute sql, id End Sub End Class dim SettingsRepository__Singleton Function SettingsRepository() If IsEmpty(SettingsRepository__Singleton) then set SettingsRepository__Singleton = new SettingsRepository_Class End If set SettingsRepository = SettingsRepository__Singleton End Function %>