Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev #1

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
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
509 changes: 509 additions & 0 deletions .github/workflows/CI.yml

Large diffs are not rendered by default.

197 changes: 197 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
# Created by https://www.toptal.com/developers/gitignore/api/node
# Edit at https://www.toptal.com/developers/gitignore?templates=node

### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# End of https://www.toptal.com/developers/gitignore/api/node

# Created by https://www.toptal.com/developers/gitignore/api/macos
# Edit at https://www.toptal.com/developers/gitignore?templates=macos

### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### macOS Patch ###
# iCloud generated files
*.icloud

# End of https://www.toptal.com/developers/gitignore/api/macos

# Created by https://www.toptal.com/developers/gitignore/api/windows
# Edit at https://www.toptal.com/developers/gitignore?templates=windows

### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db

# Dump file
*.stackdump

# Folder config file
[Dd]esktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp

# Windows shortcuts
*.lnk

# End of https://www.toptal.com/developers/gitignore/api/windows

#Added by cargo

/target
Cargo.lock

.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

*.node
16 changes: 16 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
target
Cargo.lock
.cargo
.github
npm
examples
.eslintrc
.prettierignore
rustfmt.toml
yarn.lock
*.node
*.tgz
.yarn
test.js
__test__
renovate.json
1 change: 1 addition & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nodeLinker: node-modules
21 changes: 21 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[package]
edition = "2021"
name = "uroborosql-fmt-napi"
version = "0.0.0"

[lib]
crate-type = ["cdylib"]

[dependencies]
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
napi = { version = "2.10.0", default-features = false, features = ["napi4"] }
napi-derive = "2.9.1"

uroborosql-fmt = {git = "https://github.com/future-architect/uroborosql-fmt"}


[build-dependencies]
napi-build = "2.0.1"

[profile.release]
lto = true
53 changes: 53 additions & 0 deletions __test__/index.spec.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import test from "ava";

import { runfmt } from "../index.js";

test("format sql", (t) => {
let target = `
SELECT
ID AS DATA_ID -- ID
, CODE AS DATA_CODE -- コード
, NAME AS DATA_NAME -- 名称
, VALUE1 AS VALUEAAAAAAAAAAAAAAAA
, VALUE2 -- 値2
, (
SELECT
VALUE3
FROM
TABLE2
) -- サブクエリ
FROM
TABLE1
WHERE
ID = 'DUMMY' -- IDが'DUMMY'
AND VAL1 = 1 -- VAL1が1
AND CODE = 42 -- CODEが42
OR VALUE2 = /*LONGLONGLONGLONG_BIND_PARAMETER*/42
`;
let dst = `SELECT
ID AS DATA_ID -- ID
, CODE AS DATA_CODE -- コード
, NAME AS DATA_NAME -- 名称
, VALUE1 AS VALUEAAAAAAAAAAAAAAAA
, VALUE2 AS VALUE2 -- 値2
, (
SELECT
VALUE3
FROM
TABLE2
) AS (
SELECT
VALUE3
FROM
TABLE2
) -- サブクエリ
FROM
TABLE1
WHERE
ID = 'DUMMY' -- IDが'DUMMY'
AND VAL1 = 1 -- VAL1が1
AND CODE = 42 -- CODEが42
OR VALUE2 = /*LONGLONGLONGLONG_BIND_PARAMETER*/42
`;
t.is(runfmt(target), dst);
});
5 changes: 5 additions & 0 deletions build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
extern crate napi_build;

fn main() {
napi_build::setup();
}
16 changes: 16 additions & 0 deletions examples/as.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

--test
/* test */
select
--test
a, --test
b --test
/* multi */
--test
from tab1 /*ttesttestesttesetetssss */
AS t1 --test
, tab2 AS t2, tabtabtabtabtab AS long --test
where --test
1 = 2 + 1 --test
AND ttesttestesttesetetssss = t1 --test tests
--test
6 changes: 6 additions & 0 deletions examples/multi_content_lhs.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
select a, b
from tab1 /* this table is table 1 */ as t1, tabtabtabtab as l
where t.a + l.a = 2
and t.solonglong = 42
and t.n = 5
and t.x + t.y + t.z + t.w = 57
10 changes: 10 additions & 0 deletions examples/or.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
select a
from tab1
where l.a = 2
or t.solonglong = 42
or t.a = 433
and aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 2
and test = 1
or test = 2
and test = 3
or test = 2
3 changes: 3 additions & 0 deletions examples/simple.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
select a, b
from tab1, tab2
where tab1.num = 1
19 changes: 19 additions & 0 deletions examples/target.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
SELECT
Identifier as id, --ID
student_name -- 学生名
FROM
japanese_student_table
AS JPN_STD --日本人学生
, SUBJECT_TABLE AS SBJ --科目
WHERE
JPN_STD.sportId = (SELECT
sportId FROM
Sport
WHERE
Sport.sportname
= 'baseball'
) -- 野球をしている生徒
AND
JPN_STD.ID = SBJ.ID
AND SBJ.grade >
/*grade*/50 --成績が50点以上
9 changes: 9 additions & 0 deletions examples/test.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
SELECT A

from tb
WHERE
1=22222222222222
OR
(test = test and
test = test and test = test --comment
) --test
6 changes: 6 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* tslint:disable */
/* eslint-disable */

/* auto-generated by NAPI-RS */

export function runfmt(input: string): string
Loading