MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / extractStatementSymbol

Method extractStatementSymbol

pkg/lsp/handler.go:1223–1303  ·  view source on GitHub ↗

extractStatementSymbol extracts a document symbol from a SQL statement

(stmt interface{}, index int, lines []string, content string)

Source from the content-addressed store, hash-verified

1221
1222// extractStatementSymbol extracts a document symbol from a SQL statement
1223func (h *Handler) extractStatementSymbol(stmt interface{}, index int, lines []string, content string) *DocumentSymbol {
1224 // Determine statement type and name
1225 var name string
1226 var detail string
1227 var kind SymbolKind
1228
1229 // Use type switch to determine statement type
1230 typeName := fmt.Sprintf("%T", stmt)
1231 switch {
1232 case strings.Contains(typeName, "SelectStatement"):
1233 name = fmt.Sprintf("SELECT #%d", index+1)
1234 detail = "SELECT statement"
1235 kind = SymbolMethod
1236 case strings.Contains(typeName, "InsertStatement"):
1237 name = fmt.Sprintf("INSERT #%d", index+1)
1238 detail = "INSERT statement"
1239 kind = SymbolMethod
1240 case strings.Contains(typeName, "UpdateStatement"):
1241 name = fmt.Sprintf("UPDATE #%d", index+1)
1242 detail = "UPDATE statement"
1243 kind = SymbolMethod
1244 case strings.Contains(typeName, "DeleteStatement"):
1245 name = fmt.Sprintf("DELETE #%d", index+1)
1246 detail = "DELETE statement"
1247 kind = SymbolMethod
1248 case strings.Contains(typeName, "CreateTableStatement"):
1249 name = fmt.Sprintf("CREATE TABLE #%d", index+1)
1250 detail = "DDL statement"
1251 kind = SymbolStruct
1252 case strings.Contains(typeName, "CreateIndexStatement"):
1253 name = fmt.Sprintf("CREATE INDEX #%d", index+1)
1254 detail = "DDL statement"
1255 kind = SymbolStruct
1256 case strings.Contains(typeName, "DropStatement"):
1257 name = fmt.Sprintf("DROP #%d", index+1)
1258 detail = "DDL statement"
1259 kind = SymbolStruct
1260 case strings.Contains(typeName, "AlterStatement"):
1261 name = fmt.Sprintf("ALTER #%d", index+1)
1262 detail = "DDL statement"
1263 kind = SymbolStruct
1264 case strings.Contains(typeName, "TruncateStatement"):
1265 name = fmt.Sprintf("TRUNCATE #%d", index+1)
1266 detail = "DDL statement"
1267 kind = SymbolStruct
1268 case strings.Contains(typeName, "MergeStatement"):
1269 name = fmt.Sprintf("MERGE #%d", index+1)
1270 detail = "DML statement"
1271 kind = SymbolMethod
1272 default:
1273 name = fmt.Sprintf("Statement #%d", index+1)
1274 detail = typeName
1275 kind = SymbolVariable
1276 }
1277
1278 // For now, use a simple range based on statement index
1279 // A more sophisticated implementation would track actual positions
1280 startLine := 0

Callers 1

handleDocumentSymbolMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected