fullstuckdev commited on
Commit
9baa557
·
verified ·
1 Parent(s): d21694e

Update src/pages/api/sql.ts

Browse files
Files changed (1) hide show
  1. src/pages/api/sql.ts +15 -15
src/pages/api/sql.ts CHANGED
@@ -23,7 +23,7 @@ export default async function handler(
23
  }
24
 
25
  try {
26
- const apiKey = process.env.API_TOKEN;
27
  if (!apiKey) {
28
  return res.status(500).json({
29
  message: "Server configuration error",
@@ -76,7 +76,7 @@ Text: ${userPrompt}`;
76
  try {
77
  const content = response?.choices?.[0]?.message?.content?.trim() || '';
78
 
79
- const jsonMatch = content.match(/\{.*\}/s);
80
  if (jsonMatch) {
81
  const parsedResponse = JSON.parse(jsonMatch[0]);
82
  sqlQuery = parsedResponse.query?.trim();
@@ -120,14 +120,14 @@ Text: ${userPrompt}`;
120
 
121
  const dataAnalysis = {
122
  totalColumns: columns.length,
123
- numericColumns: columns.filter(col =>
124
- typeof firstRow[col] === 'number' &&
125
  !col.toLowerCase().includes('id') &&
126
  !col.toLowerCase().includes('_id')
127
  ),
128
- dateColumns: columns.filter(col => firstRow[col] instanceof Date),
129
- stringColumns: columns.filter(col =>
130
- typeof firstRow[col] === 'string' ||
131
  col.toLowerCase().includes('name') ||
132
  col.toLowerCase().includes('title')
133
  ),
@@ -155,13 +155,13 @@ Text: ${userPrompt}`;
155
  visualization = {
156
  type: requestedChartType,
157
  config: {
158
- labels: results.map(row =>
159
  dataAnalysis.stringColumns[0]
160
  ? String(row[dataAnalysis.stringColumns[0]])
161
  : `Row ${results.indexOf(row) + 1}`
162
  ),
163
  datasets: [{
164
- data: results.map(row => row[dataAnalysis.numericColumns[0]]),
165
  backgroundColor: results.map(() =>
166
  `hsla(${Math.random() * 360}, 70%, 50%, 0.6)`
167
  )
@@ -177,11 +177,11 @@ Text: ${userPrompt}`;
177
  type: 'line',
178
  config: {
179
  labels: dataAnalysis.dateColumns.length > 0
180
- ? results.map(row => new Date(row[dataAnalysis.dateColumns[0]]).toLocaleDateString())
181
  : results.map((_, idx) => `Point ${idx + 1}`),
182
- datasets: dataAnalysis.numericColumns.map(col => ({
183
  label: col,
184
- data: results.map(row => row[col]),
185
  borderColor: `hsl(${Math.random() * 360}, 70%, 50%)`,
186
  tension: 0.1
187
  }))
@@ -196,11 +196,11 @@ Text: ${userPrompt}`;
196
  type: 'bar',
197
  config: {
198
  labels: dataAnalysis.stringColumns.length > 0
199
- ? results.map(row => String(row[dataAnalysis.stringColumns[0]]))
200
  : results.map((_, idx) => `Row ${idx + 1}`),
201
- datasets: dataAnalysis.numericColumns.map(col => ({
202
  label: col,
203
- data: results.map(row => row[col]),
204
  backgroundColor: `hsla(${Math.random() * 360}, 70%, 50%, 0.6)`,
205
  borderColor: `hsl(${Math.random() * 360}, 70%, 50%)`,
206
  borderWidth: 1
 
23
  }
24
 
25
  try {
26
+ const apiKey = process.env.HUGGINGFACE_API_KEY;
27
  if (!apiKey) {
28
  return res.status(500).json({
29
  message: "Server configuration error",
 
76
  try {
77
  const content = response?.choices?.[0]?.message?.content?.trim() || '';
78
 
79
+ const jsonMatch = content.match(/\{[\s\S]*\}/);
80
  if (jsonMatch) {
81
  const parsedResponse = JSON.parse(jsonMatch[0]);
82
  sqlQuery = parsedResponse.query?.trim();
 
120
 
121
  const dataAnalysis = {
122
  totalColumns: columns.length,
123
+ numericColumns: columns.filter((col: string) =>
124
+ typeof (firstRow as any)[col] === 'number' &&
125
  !col.toLowerCase().includes('id') &&
126
  !col.toLowerCase().includes('_id')
127
  ),
128
+ dateColumns: columns.filter((col: string) => (firstRow as any)[col] instanceof Date),
129
+ stringColumns: columns.filter((col: string) =>
130
+ typeof (firstRow as any)[col] === 'string' ||
131
  col.toLowerCase().includes('name') ||
132
  col.toLowerCase().includes('title')
133
  ),
 
155
  visualization = {
156
  type: requestedChartType,
157
  config: {
158
+ labels: results.map((row: any) =>
159
  dataAnalysis.stringColumns[0]
160
  ? String(row[dataAnalysis.stringColumns[0]])
161
  : `Row ${results.indexOf(row) + 1}`
162
  ),
163
  datasets: [{
164
+ data: results.map((row: any) => row[dataAnalysis.numericColumns[0]]),
165
  backgroundColor: results.map(() =>
166
  `hsla(${Math.random() * 360}, 70%, 50%, 0.6)`
167
  )
 
177
  type: 'line',
178
  config: {
179
  labels: dataAnalysis.dateColumns.length > 0
180
+ ? results.map((row: any) => new Date(row[dataAnalysis.dateColumns[0]]).toLocaleDateString())
181
  : results.map((_, idx) => `Point ${idx + 1}`),
182
+ datasets: dataAnalysis.numericColumns.map((col: string) => ({
183
  label: col,
184
+ data: results.map((row: any) => row[col]),
185
  borderColor: `hsl(${Math.random() * 360}, 70%, 50%)`,
186
  tension: 0.1
187
  }))
 
196
  type: 'bar',
197
  config: {
198
  labels: dataAnalysis.stringColumns.length > 0
199
+ ? results.map((row: any) => String(row[dataAnalysis.stringColumns[0]]))
200
  : results.map((_, idx) => `Row ${idx + 1}`),
201
+ datasets: dataAnalysis.numericColumns.map((col: string) => ({
202
  label: col,
203
+ data: results.map((row: any) => row[col]),
204
  backgroundColor: `hsla(${Math.random() * 360}, 70%, 50%, 0.6)`,
205
  borderColor: `hsl(${Math.random() * 360}, 70%, 50%)`,
206
  borderWidth: 1