Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 0 additions & 44 deletions Plugins/BigQueryDriverPlugin/BigQueryPluginDriver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -633,50 +633,6 @@ internal final class BigQueryPluginDriver: PluginDatabaseDriver, @unchecked Send
)
}

func buildQuickSearchQuery(
table: String,
searchText: String,
columns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String? {
let dataset: String = lock.withLock {
let ds = _currentDataset ?? ""
_columnCache["\(ds).\(table)"] = columns
return ds
}
return BigQueryQueryBuilder.encodeSearchQuery(
table: table, dataset: dataset,
searchText: searchText, searchColumns: columns,
sortColumns: sortColumns, limit: limit, offset: offset
)
}

func buildCombinedQuery(
table: String,
filters: [(column: String, op: String, value: String)],
logicMode: String,
searchText: String,
searchColumns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
columns: [String],
limit: Int,
offset: Int
) -> String? {
let dataset: String = lock.withLock {
let ds = _currentDataset ?? ""
_columnCache["\(ds).\(table)"] = columns
return ds
}
return BigQueryQueryBuilder.encodeCombinedQuery(
table: table, dataset: dataset,
filters: filters, logicMode: logicMode,
searchText: searchText, searchColumns: searchColumns,
sortColumns: sortColumns, limit: limit, offset: offset
)
}

// MARK: - Statement Generation

func generateStatements(
Expand Down
37 changes: 0 additions & 37 deletions Plugins/DynamoDBDriverPlugin/DynamoDBPluginDriver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -542,43 +542,6 @@ internal final class DynamoDBPluginDriver: PluginDatabaseDriver, @unchecked Send
)
}

func buildQuickSearchQuery(
table: String,
searchText: String,
columns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String? {
DynamoDBQueryBuilder().buildQuickSearchQuery(
table: table, searchText: searchText,
sortColumns: sortColumns, limit: limit, offset: offset
)
}

func buildCombinedQuery(
table: String,
filters: [(column: String, op: String, value: String)],
logicMode: String,
searchText: String,
searchColumns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
columns: [String],
limit: Int,
offset: Int
) -> String? {
let (keySchema, attrTypes) = lock.withLock {
let desc = _tableDescriptionCache[table]
return (extractKeySchema(from: desc), extractAttributeTypes(from: desc))
}
return DynamoDBQueryBuilder().buildCombinedQuery(
table: table, filters: filters, logicMode: logicMode,
searchText: searchText, sortColumns: sortColumns,
limit: limit, offset: offset, keySchema: keySchema,
attributeTypes: attrTypes
)
}

// MARK: - Statement Generation

func generateStatements(
Expand Down
64 changes: 0 additions & 64 deletions Plugins/DynamoDBDriverPlugin/DynamoDBQueryBuilder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -97,70 +97,6 @@ struct DynamoDBQueryBuilder {
)
}

func buildQuickSearchQuery(
table: String,
searchText: String,
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String {
let searchFilter = DynamoDBFilterSpec(column: "*", op: "CONTAINS", value: searchText)
return Self.encodeScanQuery(
tableName: table, limit: limit, offset: offset,
filters: [searchFilter], logicMode: "AND"
)
}

func buildCombinedQuery(
table: String,
filters: [(column: String, op: String, value: String)],
logicMode: String,
searchText: String,
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int,
keySchema: [(name: String, keyType: String)],
attributeTypes: [String: String] = [:]
) -> String? {
let searchFilter: DynamoDBFilterSpec? = searchText.isEmpty
? nil
: DynamoDBFilterSpec(column: "*", op: "CONTAINS", value: searchText)

var allFilters = filters.map { DynamoDBFilterSpec(column: $0.column, op: $0.op, value: $0.value) }
if let sf = searchFilter {
allFilters.append(sf)
}

if allFilters.isEmpty {
return Self.encodeScanQuery(tableName: table, limit: limit, offset: offset, filters: [], logicMode: "AND")
}

let partitionKey = keySchema.first(where: { $0.keyType == "HASH" })
if let pk = partitionKey,
let pkIdx = allFilters.firstIndex(where: { $0.column == pk.name && $0.op == "=" })
{
let pkFilter = allFilters[pkIdx]
let pkType = attributeTypes[pk.name] ?? "S"
var remainingFilters = allFilters
remainingFilters.remove(at: pkIdx)
return Self.encodeQueryQuery(
tableName: table,
partitionKeyName: pk.name,
partitionKeyValue: pkFilter.value,
partitionKeyType: pkType,
limit: limit,
offset: offset,
filters: remainingFilters,
logicMode: logicMode
)
}

return Self.encodeScanQuery(
tableName: table, limit: limit, offset: offset,
filters: allFilters, logicMode: logicMode
)
}

// MARK: - Encoding

private static func encodeScanQuery(
Expand Down
33 changes: 0 additions & 33 deletions Plugins/EtcdDriverPlugin/EtcdPluginDriver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -356,39 +356,6 @@ final class EtcdPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
)
}

func buildQuickSearchQuery(
table: String,
searchText: String,
columns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String? {
let prefix = resolvedPrefix(for: table)
return EtcdQueryBuilder().buildQuickSearchQuery(
prefix: prefix, searchText: searchText,
sortColumns: sortColumns, limit: limit, offset: offset
)
}

func buildCombinedQuery(
table: String,
filters: [(column: String, op: String, value: String)],
logicMode: String,
searchText: String,
searchColumns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
columns: [String],
limit: Int,
offset: Int
) -> String? {
let prefix = resolvedPrefix(for: table)
return EtcdQueryBuilder().buildCombinedQuery(
prefix: prefix, filters: filters, logicMode: logicMode,
searchText: searchText, sortColumns: sortColumns, limit: limit, offset: offset
)
}

// MARK: - Statement Generation

func generateStatements(
Expand Down
38 changes: 0 additions & 38 deletions Plugins/EtcdDriverPlugin/EtcdQueryBuilder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -65,44 +65,6 @@ struct EtcdQueryBuilder {
)
}

func buildQuickSearchQuery(
prefix: String,
searchText: String,
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String {
let sortAsc = sortColumns.first?.ascending ?? true
return Self.encodeRangeQuery(
prefix: prefix, limit: limit, offset: offset,
sortAscending: sortAsc, filterType: .contains, filterValue: searchText
)
}

func buildCombinedQuery(
prefix: String,
filters: [(column: String, op: String, value: String)],
logicMode: String,
searchText: String,
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String? {
if hasUnsupportedFilters(filters) { return nil }
let sortAsc = sortColumns.first?.ascending ?? true
if !searchText.isEmpty {
return Self.encodeRangeQuery(
prefix: prefix, limit: limit, offset: offset,
sortAscending: sortAsc, filterType: .contains, filterValue: searchText
)
}
let (filterType, filterValue) = extractKeyFilter(from: filters)
return Self.encodeRangeQuery(
prefix: prefix, limit: limit, offset: offset,
sortAscending: sortAsc, filterType: filterType, filterValue: filterValue
)
}

func buildCountQuery(prefix: String) -> String {
Self.encodeCountQuery(prefix: prefix, filterType: .none, filterValue: "")
}
Expand Down
61 changes: 0 additions & 61 deletions Plugins/MSSQLDriverPlugin/MSSQLPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1237,67 +1237,6 @@ final class MSSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
return query
}

func buildQuickSearchQuery(
table: String,
searchText: String,
columns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String? {
let quotedTable = mssqlQuoteIdentifier(table)
var query = "SELECT * FROM \(quotedTable)"
let escapedSearch = mssqlEscapeForLike(searchText)
let conditions = columns.map { column -> String in
let quotedColumn = mssqlQuoteIdentifier(column)
return "CAST(\(quotedColumn) AS NVARCHAR(MAX)) LIKE '%\(escapedSearch)%' ESCAPE '\\'"
}
if !conditions.isEmpty {
query += " WHERE (" + conditions.joined(separator: " OR ") + ")"
}
let orderBy = mssqlBuildOrderByClause(sortColumns: sortColumns, columns: columns)
?? "ORDER BY (SELECT NULL)"
query += " \(orderBy) OFFSET \(offset) ROWS FETCH NEXT \(limit) ROWS ONLY"
return query
}

func buildCombinedQuery(
table: String,
filters: [(column: String, op: String, value: String)],
logicMode: String,
searchText: String,
searchColumns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
columns: [String],
limit: Int,
offset: Int
) -> String? {
let quotedTable = mssqlQuoteIdentifier(table)
var query = "SELECT * FROM \(quotedTable)"
let filterConditions = mssqlBuildWhereClause(filters: filters, logicMode: logicMode)
let escapedSearch = mssqlEscapeForLike(searchText)
let searchConditions = searchColumns.map { column -> String in
let quotedColumn = mssqlQuoteIdentifier(column)
return "CAST(\(quotedColumn) AS NVARCHAR(MAX)) LIKE '%\(escapedSearch)%' ESCAPE '\\'"
}
let searchClause = searchConditions.isEmpty
? "" : "(" + searchConditions.joined(separator: " OR ") + ")"
var whereParts: [String] = []
if !filterConditions.isEmpty {
whereParts.append("(\(filterConditions))")
}
if !searchClause.isEmpty {
whereParts.append(searchClause)
}
if !whereParts.isEmpty {
query += " WHERE " + whereParts.joined(separator: " AND ")
}
let orderBy = mssqlBuildOrderByClause(sortColumns: sortColumns, columns: columns)
?? "ORDER BY (SELECT NULL)"
query += " \(orderBy) OFFSET \(offset) ROWS FETCH NEXT \(limit) ROWS ONLY"
return query
}

// MARK: - Query Building Helpers

private func mssqlQuoteIdentifier(_ identifier: String) -> String {
Expand Down
34 changes: 0 additions & 34 deletions Plugins/MongoDBDriverPlugin/MongoDBPluginDriver.swift
Original file line number Diff line number Diff line change
Expand Up @@ -567,40 +567,6 @@ final class MongoDBPluginDriver: PluginDatabaseDriver {
)
}

func buildQuickSearchQuery(
table: String,
searchText: String,
columns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
limit: Int,
offset: Int
) -> String? {
let builder = MongoDBQueryBuilder()
return builder.buildQuickSearchQuery(
collection: table, searchText: searchText, columns: columns,
sortColumns: sortColumns, limit: limit, offset: offset
)
}

func buildCombinedQuery(
table: String,
filters: [(column: String, op: String, value: String)],
logicMode: String,
searchText: String,
searchColumns: [String],
sortColumns: [(columnIndex: Int, ascending: Bool)],
columns: [String],
limit: Int,
offset: Int
) -> String? {
let builder = MongoDBQueryBuilder()
return builder.buildCombinedQuery(
collection: table, filters: filters, logicMode: logicMode,
searchText: searchText, searchColumns: searchColumns,
sortColumns: sortColumns, columns: columns, limit: limit, offset: offset
)
}

func generateStatements(
table: String,
columns: [String],
Expand Down
Loading
Loading