Skip to content

Commit c376f6f

Browse files
authored
support cjs,mjs,cts,mts extensions (#235)
* extensions * tests * docs
1 parent 8b90357 commit c376f6f

32 files changed

+660
-4
lines changed

book/docs/cli/README.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ sqlx-ts [OPTIONS] <PATH>
106106
Primary DB user
107107
108108
--ext <EXT>
109-
file extensions [possible values: ts, js, sql]
109+
file extensions [possible values: ts, js, sql, mjs, cjs, mts, cts]
110110
111111
-g, --generate-types
112112
generate types of raw SQLs using default configuration
@@ -246,7 +246,7 @@ user of the database that you connect to
246246

247247
### --ext
248248

249-
File extensions to search. It can be either `ts` | `js` - [default: ts]
249+
File extensions to search. Supported extensions: `ts` | `js` | `sql` | `mjs` | `cjs` | `mts` | `cts` - [default: ts]
250250

251251
<Tabs>
252252
<TabItem value="npm" label="npm" default>

src/common/cli.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ impl fmt::Display for FileExtension {
88
FileExtension::Ts => ".ts".to_string(),
99
FileExtension::Js => ".js".to_string(),
1010
FileExtension::Sql => ".sql".to_string(),
11+
FileExtension::Mts => ".mts".to_string(),
12+
FileExtension::Cts => ".cts".to_string(),
13+
FileExtension::Mjs => ".mjs".to_string(),
14+
FileExtension::Cjs => ".cjs".to_string(),
1115
};
1216
write!(f, "{extension}")
1317
}

src/common/types.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ pub enum FileExtension {
77
Ts,
88
Js,
99
Sql,
10+
Mts,
11+
Cts,
12+
Mjs,
13+
Cjs,
1014
}
1115

1216
#[derive(ValueEnum, Debug, Clone, Serialize, Deserialize)]

src/parser/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use swc_common::errors::Handler;
1515
pub fn parse_source(path: &PathBuf) -> Result<(HashMap<PathBuf, Vec<SQL>>, Handler)> {
1616
let extension = path.extension().and_then(|s| s.to_str()).unwrap_or("");
1717
let result = match extension {
18-
"ts" | "js" => parse_js_file(path),
18+
"ts" | "js" | "mts" | "cts" | "mjs" | "cjs" => parse_js_file(path),
1919
"sql" => parse_sql_file(path),
2020
_ => {
2121
return Err(color_eyre::eyre::eyre!("Unsupported file extension: {}", extension));
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const { sql } = require('sqlx-ts')
2+
3+
// .cjs file extension test (CommonJS JavaScript)
4+
const cjsQuery = sql`
5+
-- @name: cjs query
6+
SELECT id, name FROM items WHERE rarity = $1
7+
`
8+
9+
module.exports = {
10+
cjsQuery,
11+
cjsFunction: () => {
12+
return sql`
13+
-- @name: cjs function query
14+
SELECT id, name FROM items WHERE id = $1
15+
`
16+
}
17+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
export type CjsQueryParams = [string | null];
2+
3+
export interface ICjsQueryResult {
4+
id: number;
5+
name: string;
6+
}
7+
8+
export interface ICjsQueryQuery {
9+
params: CjsQueryParams;
10+
result: ICjsQueryResult;
11+
}
12+
13+
export type CjsFunctionQueryParams = [number];
14+
15+
export interface ICjsFunctionQueryResult {
16+
id: number;
17+
name: string;
18+
}
19+
20+
export interface ICjsFunctionQueryQuery {
21+
params: CjsFunctionQueryParams;
22+
result: ICjsFunctionQueryResult;
23+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
export type CjsQueryParams = [string | null];
2+
3+
export interface ICjsQueryResult {
4+
id: number;
5+
name: string;
6+
}
7+
8+
export interface ICjsQueryQuery {
9+
params: CjsQueryParams;
10+
result: ICjsQueryResult;
11+
}
12+
13+
export type CjsFunctionQueryParams = [number];
14+
15+
export interface ICjsFunctionQueryResult {
16+
id: number;
17+
name: string;
18+
}
19+
20+
export interface ICjsFunctionQueryQuery {
21+
params: CjsFunctionQueryParams;
22+
result: ICjsFunctionQueryResult;
23+
}
24+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { sql } from 'sqlx-ts'
2+
3+
// .cts file extension test (CommonJS TypeScript)
4+
const ctsQuery = sql`
5+
-- @name: cts query
6+
SELECT id, name FROM items WHERE rarity = $1
7+
`
8+
9+
module.exports = {
10+
ctsQuery,
11+
ctsFunction: () => {
12+
return sql`
13+
-- @name: cts function query
14+
SELECT id, name FROM items WHERE id = $1
15+
`
16+
}
17+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
export type CtsQueryParams = [string | null];
2+
3+
export interface ICtsQueryResult {
4+
id: number;
5+
name: string;
6+
}
7+
8+
export interface ICtsQueryQuery {
9+
params: CtsQueryParams;
10+
result: ICtsQueryResult;
11+
}
12+
13+
export type CtsFunctionQueryParams = [number];
14+
15+
export interface ICtsFunctionQueryResult {
16+
id: number;
17+
name: string;
18+
}
19+
20+
export interface ICtsFunctionQueryQuery {
21+
params: CtsFunctionQueryParams;
22+
result: ICtsFunctionQueryResult;
23+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
export type CtsQueryParams = [string | null];
2+
3+
export interface ICtsQueryResult {
4+
id: number;
5+
name: string;
6+
}
7+
8+
export interface ICtsQueryQuery {
9+
params: CtsQueryParams;
10+
result: ICtsQueryResult;
11+
}
12+
13+
export type CtsFunctionQueryParams = [number];
14+
15+
export interface ICtsFunctionQueryResult {
16+
id: number;
17+
name: string;
18+
}
19+
20+
export interface ICtsFunctionQueryQuery {
21+
params: CtsFunctionQueryParams;
22+
result: ICtsFunctionQueryResult;
23+
}
24+

0 commit comments

Comments
 (0)