1- from typing import List
21from pathlib import Path
3- from json_sql .tables import FileSystemTables , Table
4- from json import loads
5- from eval import eval_sql
2+ from .tables import FileSystemTables
3+ from .eval import eval_sql
4+ from argparse import ArgumentParser
5+ from csv import DictWriter
6+ from sys import stdout
7+ from json import dumps
68
79
810def query (code : str , workdir : Path , ctx : dict ):
@@ -11,4 +13,40 @@ def query(code: str, workdir: Path, ctx: dict):
1113 return result
1214
1315
14- def help (): ...
16+ if __name__ == "__main__" :
17+ parser = ArgumentParser (description = "Run SQL queries on JSON files." )
18+ parser .add_argument ("code" , type = str , help = "SQL query to execute" )
19+ parser .add_argument (
20+ "--workdir" ,
21+ type = Path ,
22+ default = Path .cwd (),
23+ help = "Directory containing JSON files" ,
24+ )
25+ parser .add_argument (
26+ "--ctx" ,
27+ type = str ,
28+ default = "{}" ,
29+ help = "Context for the query (default: empty dictionary)" ,
30+ )
31+ parser .add_argument (
32+ "--format" ,
33+ type = str ,
34+ default = "json" ,
35+ choices = ["json" , "csv" ],
36+ help = "Output format (default: json)" ,
37+ )
38+ args = parser .parse_args ()
39+
40+ result = query (code = args .code , workdir = args .workdir , ctx = {})
41+
42+ if args .format == "json" :
43+ print (dumps (result , indent = 2 ))
44+ elif args .format == "csv" :
45+ if len (result ) == 0 :
46+ print ("No results to write to CSV." )
47+ else :
48+ keys = result [0 ].keys ()
49+ writer = DictWriter (stdout , fieldnames = keys )
50+ writer .writeheader ()
51+ for row in result :
52+ writer .writerow (row )
0 commit comments