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

Function formatSQL

pkg/lsp/handler.go:774–837  ·  view source on GitHub ↗

formatSQL provides basic SQL formatting

(sql string, opts FormattingOptions)

Source from the content-addressed store, hash-verified

772
773// formatSQL provides basic SQL formatting
774func formatSQL(sql string, opts FormattingOptions) string {
775 // Basic SQL formatter - normalize whitespace and keyword casing
776 lines := strings.Split(sql, "\n")
777 var result []string
778
779 indent := ""
780 if opts.InsertSpaces {
781 indent = strings.Repeat(" ", opts.TabSize)
782 } else {
783 indent = "\t"
784 }
785
786 currentIndent := ""
787 for _, line := range lines {
788 trimmed := strings.TrimSpace(line)
789 if trimmed == "" {
790 continue
791 }
792
793 upper := strings.ToUpper(trimmed)
794
795 // Adjust indent based on keywords
796 if strings.HasPrefix(upper, "SELECT") ||
797 strings.HasPrefix(upper, "INSERT") ||
798 strings.HasPrefix(upper, "UPDATE") ||
799 strings.HasPrefix(upper, "DELETE") ||
800 strings.HasPrefix(upper, "CREATE") ||
801 strings.HasPrefix(upper, "DROP") ||
802 strings.HasPrefix(upper, "ALTER") ||
803 strings.HasPrefix(upper, "WITH") {
804 currentIndent = ""
805 } else if strings.HasPrefix(upper, "FROM") ||
806 strings.HasPrefix(upper, "WHERE") ||
807 strings.HasPrefix(upper, "SET") ||
808 strings.HasPrefix(upper, "VALUES") {
809 currentIndent = ""
810 } else if strings.HasPrefix(upper, "AND") ||
811 strings.HasPrefix(upper, "OR") {
812 currentIndent = indent
813 } else if strings.HasPrefix(upper, "JOIN") ||
814 strings.HasPrefix(upper, "LEFT") ||
815 strings.HasPrefix(upper, "RIGHT") ||
816 strings.HasPrefix(upper, "INNER") ||
817 strings.HasPrefix(upper, "OUTER") ||
818 strings.HasPrefix(upper, "CROSS") {
819 currentIndent = ""
820 } else if strings.HasPrefix(upper, "GROUP") ||
821 strings.HasPrefix(upper, "ORDER") ||
822 strings.HasPrefix(upper, "HAVING") ||
823 strings.HasPrefix(upper, "LIMIT") {
824 currentIndent = ""
825 }
826
827 result = append(result, currentIndent+trimmed)
828 }
829
830 formatted := strings.Join(result, "\n")
831

Callers 1

handleFormattingMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected