Coder Social home page Coder Social logo

sqls's Introduction

sqls

test

An implementation of the Language Server Protocol for SQL.

Note

This project is currently under development and there is no stable release. Therefore, destructive interface changes and configuration changes are expected.

Features

sqls aims to provide advanced intelligence for you to edit sql in your own editor.

Support RDBMS

Language Server Features

Auto Completion

completion

  • DML(Data Manipulation Language)
    • SELECT
      • Sub Query
    • INSERT
    • UPDATE
    • DELETE
  • DDL(Data Definition Language)
    • CREATE TABLE
    • ALTER TABLE

CodeAction

code_actions

  • Execute SQL
  • Explain SQL
  • Switch Connection(Selected Database Connection)
  • Switch Database

Hover

hover

Document Formatting

Coming soon.

Installation

go get github.com/lighttiger2505/sqls

Editor Plugins

DB Configuration

The connection to the RDBMS is essential to take advantage of the functionality provided by sqls. You need to set the connection to the RDBMS.

Configuration Methods

There are the following methods for RDBMS connection settings, and they are prioritized in order from the top. Whichever method you choose, the settings you make will remain the same.

  1. Configuration file specified by the -config flag
  2. workspace/configuration set to LSP client
  3. Configuration file located in the following location
    • $HOME/.config/sqls/config.yml

Configuration file sample

connections:
  - alias: dsn_mysql
    'driver': 'mysql',
    'dataSourceName': 'root:root@tcp(127.0.0.1:13306)/world',
  - alias: individual_mysql
    driver: mysql
    proto: tcp
    user: root
    passwd: root
    host: 127.0.0.1
    port: 13306
    dbName: world
    params:
      autocommit: "true"
      tls: skip-verify
  - alias: mysql_via_ssh
    driver: mysql
    proto: tcp
    user: admin
    passwd: Q+ACgv12ABx/
    host: 192.168.121.163
    port: 3306
    dbName: world
    sshConfig:
      host: 192.168.121.168
      port: 22
      user: sshuser
      passPhrase: ssspass
      privateKey: /home/lighttiger2505/.ssh/id_rsa

Workspace configuration Sample

Below is a setting example with vim-lsp. I'm sorry. Please wait a little longer for other editor settings.

if executable('sqls')
    augroup LspSqls
        autocmd!
        autocmd User lsp_setup call lsp#register_server({
        \   'name': 'sqls',
        \   'cmd': {server_info->['sqls']},
        \   'whitelist': ['sql'],
        \   'workspace_config': {
        \     'sqls': {
        \       'connections': [
        \         {
        \           'driver': 'mysql',
        \           'dataSourceName': 'root:root@tcp(127.0.0.1:13306)/world',
        \         },
        \         {
        \           'driver': 'postgresql',
        \           'dataSourceName': 'host=127.0.0.1 port=15432 user=postgres password=mysecretpassword1234 dbname=dvdrental sslmode=disable',
        \         },
        \       ],
        \     },
        \   },
        \ })
    augroup END
endif

Configuratioin Params

The first setting in connections is the default connection.

Key Description
connections Database connections

connections

dataSourceName takes precedence over the value set in proto, user, passwd, host, port, dbName, params.

Key Description
alias Connection alias name. Optional.
driver mysql, postgresql, sqlite3. Required.
dataSourceName Data source name.
proto tcp, udp, unix.
user User name
passwd Password
host Host
port Port
path unix socket path
dbName Database name
params Option params. Optional.
sshConfig ssh config. Optional.

sshConfig

Key Description
host ssh host. Required.
port ssh port. Required.
user ssh user. Optional.
privateKey private key path. Required.
passPhrase passPhrase. Optional.

DSN (Data Source Name)

See also.

Special Thanks

@mattn

Inspired

I created sqls inspired by the following OSS.

sqls's People

Contributors

lighttiger2505 avatar mattn avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.