-
-
Notifications
You must be signed in to change notification settings - Fork 135
Expand file tree
/
Copy pathDriverPlugin.swift
More file actions
119 lines (111 loc) · 5.49 KB
/
DriverPlugin.swift
File metadata and controls
119 lines (111 loc) · 5.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import Foundation
import SwiftUI
public protocol DriverPlugin: TableProPlugin {
static var databaseTypeId: String { get }
static var databaseDisplayName: String { get }
static var iconName: String { get }
static var defaultPort: Int { get }
static var additionalConnectionFields: [ConnectionField] { get }
static var additionalDatabaseTypeIds: [String] { get }
static func driverVariant(for databaseTypeId: String) -> String?
func createDriver(config: DriverConnectionConfig) -> any PluginDatabaseDriver
// MARK: - UI/Capability Metadata
static var requiresAuthentication: Bool { get }
static var connectionMode: ConnectionMode { get }
static var urlSchemes: [String] { get }
static var fileExtensions: [String] { get }
static var brandColorHex: String { get }
static var queryLanguageName: String { get }
static var editorLanguage: EditorLanguage { get }
static var supportsForeignKeys: Bool { get }
static var supportsSchemaEditing: Bool { get }
static var supportsDatabaseSwitching: Bool { get }
static var supportsSchemaSwitching: Bool { get }
static var supportsImport: Bool { get }
static var supportsExport: Bool { get }
static var supportsHealthMonitor: Bool { get }
static var systemDatabaseNames: [String] { get }
static var systemSchemaNames: [String] { get }
static var databaseGroupingStrategy: GroupingStrategy { get }
static var defaultGroupName: String { get }
static var columnTypesByCategory: [String: [String]] { get }
static var sqlDialect: SQLDialectDescriptor? { get }
static var statementCompletions: [CompletionEntry] { get }
static var tableEntityName: String { get }
static var supportsCascadeDrop: Bool { get }
static var supportsForeignKeyDisable: Bool { get }
static var immutableColumns: [String] { get }
static var supportsReadOnlyMode: Bool { get }
static var defaultSchemaName: String { get }
static var requiresReconnectForDatabaseSwitch: Bool { get }
static var structureColumnFields: [StructureColumnField] { get }
static var defaultPrimaryKeyColumn: String? { get }
static var supportsQueryProgress: Bool { get }
static var supportsRoutines: Bool { get }
static var supportsSSH: Bool { get }
static var supportsSSL: Bool { get }
static var navigationModel: NavigationModel { get }
static var explainVariants: [ExplainVariant] { get }
static var pathFieldRole: PathFieldRole { get }
static var isDownloadable: Bool { get }
static var postConnectActions: [PostConnectAction] { get }
static var parameterStyle: ParameterStyle { get }
}
public extension DriverPlugin {
static var additionalConnectionFields: [ConnectionField] { [] }
static var additionalDatabaseTypeIds: [String] { [] }
static func driverVariant(for databaseTypeId: String) -> String? { nil }
// MARK: - UI/Capability Metadata Defaults
static var requiresAuthentication: Bool { true }
static var connectionMode: ConnectionMode { .network }
static var urlSchemes: [String] { [] }
static var fileExtensions: [String] { [] }
static var brandColorHex: String { "#808080" }
static var queryLanguageName: String { "SQL" }
static var editorLanguage: EditorLanguage { .sql }
static var supportsForeignKeys: Bool { true }
static var supportsSchemaEditing: Bool { true }
static var supportsDatabaseSwitching: Bool { true }
static var supportsSchemaSwitching: Bool { false }
static var supportsImport: Bool { true }
static var supportsExport: Bool { true }
static var supportsHealthMonitor: Bool { true }
static var systemDatabaseNames: [String] { [] }
static var systemSchemaNames: [String] { [] }
static var databaseGroupingStrategy: GroupingStrategy { .byDatabase }
static var defaultGroupName: String { "main" }
static var columnTypesByCategory: [String: [String]] {
[
"Integer": ["INTEGER", "INT", "SMALLINT", "BIGINT", "TINYINT"],
"Float": ["FLOAT", "DOUBLE", "DECIMAL", "NUMERIC", "REAL"],
"String": ["VARCHAR", "CHAR", "TEXT", "NVARCHAR", "NCHAR"],
"Date": ["DATE", "TIME", "DATETIME", "TIMESTAMP"],
"Binary": ["BLOB", "BINARY", "VARBINARY"],
"Boolean": ["BOOLEAN", "BOOL"],
"JSON": ["JSON"]
]
}
static var sqlDialect: SQLDialectDescriptor? { nil }
static var statementCompletions: [CompletionEntry] { [] }
static var tableEntityName: String { "Tables" }
static var supportsCascadeDrop: Bool { false }
static var supportsForeignKeyDisable: Bool { true }
static var immutableColumns: [String] { [] }
static var supportsReadOnlyMode: Bool { true }
static var defaultSchemaName: String { "public" }
static var requiresReconnectForDatabaseSwitch: Bool { false }
static var structureColumnFields: [StructureColumnField] {
[.name, .type, .nullable, .defaultValue, .autoIncrement, .comment]
}
static var defaultPrimaryKeyColumn: String? { nil }
static var supportsQueryProgress: Bool { false }
static var supportsRoutines: Bool { false }
static var supportsSSH: Bool { true }
static var supportsSSL: Bool { true }
static var navigationModel: NavigationModel { .standard }
static var explainVariants: [ExplainVariant] { [] }
static var pathFieldRole: PathFieldRole { .database }
static var parameterStyle: ParameterStyle { .questionMark }
static var isDownloadable: Bool { false }
static var postConnectActions: [PostConnectAction] { [] }
}