mirror of https://github.com/nocodb/nocodb
Raju Udava
1 year ago
committed by
GitHub
2 changed files with 216 additions and 209 deletions
@ -0,0 +1,207 @@
|
||||
import { Api, UITypes } from 'nocodb-sdk'; |
||||
import { rowMixedValue } from './xcdb-records'; |
||||
let api: Api<any>; |
||||
|
||||
const columns = { |
||||
selectBased: [ |
||||
{ |
||||
column_name: 'Id', |
||||
title: 'Id', |
||||
uidt: UITypes.ID, |
||||
}, |
||||
{ |
||||
column_name: 'SingleSelect', |
||||
title: 'SingleSelect', |
||||
uidt: UITypes.SingleSelect, |
||||
dtxp: "'jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'", |
||||
}, |
||||
{ |
||||
column_name: 'MultiSelect', |
||||
title: 'MultiSelect', |
||||
uidt: UITypes.MultiSelect, |
||||
dtxp: "'jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'", |
||||
}, |
||||
], |
||||
|
||||
dateTimeBased: [ |
||||
{ |
||||
column_name: 'Id', |
||||
title: 'Id', |
||||
uidt: UITypes.ID, |
||||
}, |
||||
{ |
||||
column_name: 'Date', |
||||
title: 'Date', |
||||
uidt: UITypes.Date, |
||||
}, |
||||
], |
||||
|
||||
textBased: [ |
||||
{ |
||||
column_name: 'Id', |
||||
title: 'Id', |
||||
uidt: UITypes.ID, |
||||
}, |
||||
{ |
||||
column_name: 'SingleLineText', |
||||
title: 'SingleLineText', |
||||
uidt: UITypes.SingleLineText, |
||||
}, |
||||
{ |
||||
column_name: 'MultiLineText', |
||||
title: 'MultiLineText', |
||||
uidt: UITypes.LongText, |
||||
}, |
||||
{ |
||||
column_name: 'Email', |
||||
title: 'Email', |
||||
uidt: UITypes.Email, |
||||
}, |
||||
{ |
||||
column_name: 'PhoneNumber', |
||||
title: 'PhoneNumber', |
||||
uidt: UITypes.PhoneNumber, |
||||
}, |
||||
{ |
||||
column_name: 'URL', |
||||
title: 'URL', |
||||
uidt: UITypes.URL, |
||||
}, |
||||
], |
||||
|
||||
numberBased: [ |
||||
{ |
||||
column_name: 'Id', |
||||
title: 'Id', |
||||
uidt: UITypes.ID, |
||||
}, |
||||
{ |
||||
column_name: 'Number', |
||||
title: 'Number', |
||||
uidt: UITypes.Number, |
||||
}, |
||||
{ |
||||
column_name: 'Decimal', |
||||
title: 'Decimal', |
||||
uidt: UITypes.Decimal, |
||||
}, |
||||
{ |
||||
column_name: 'Currency', |
||||
title: 'Currency', |
||||
uidt: UITypes.Currency, |
||||
}, |
||||
{ |
||||
column_name: 'Percent', |
||||
title: 'Percent', |
||||
uidt: UITypes.Percent, |
||||
}, |
||||
{ |
||||
column_name: 'Duration', |
||||
title: 'Duration', |
||||
uidt: UITypes.Duration, |
||||
}, |
||||
{ |
||||
column_name: 'Rating', |
||||
title: 'Rating', |
||||
uidt: UITypes.Rating, |
||||
}, |
||||
{ |
||||
column_name: 'Year', |
||||
title: 'Year', |
||||
uidt: UITypes.Year, |
||||
}, |
||||
{ |
||||
column_name: 'Time', |
||||
title: 'Time', |
||||
uidt: UITypes.Time, |
||||
}, |
||||
], |
||||
}; |
||||
|
||||
async function createDemoTable({ |
||||
context: context, |
||||
recordCnt: recordCnt, |
||||
type: type, |
||||
}: { |
||||
context: any; |
||||
recordCnt: number; |
||||
type: string; |
||||
}) { |
||||
api = new Api({ |
||||
baseURL: `http://localhost:8080/`, |
||||
headers: { |
||||
'xc-auth': context.token, |
||||
}, |
||||
}); |
||||
|
||||
const project = await api.project.read(context.project.id); |
||||
const table = await api.base.tableCreate(context.project.id, project.bases?.[0].id, { |
||||
table_name: type, |
||||
title: type, |
||||
columns: columns[type], |
||||
}); |
||||
|
||||
if (recordCnt === 0) return table; |
||||
|
||||
const rowAttributes = []; |
||||
|
||||
switch (type) { |
||||
case 'selectBased': |
||||
try { |
||||
for (let i = 0; i < recordCnt; i++) { |
||||
const row = { |
||||
SingleSelect: rowMixedValue(columns.selectBased[1], i), |
||||
MultiSelect: rowMixedValue(columns.selectBased[2], i), |
||||
}; |
||||
rowAttributes.push(row); |
||||
} |
||||
} catch (e) { |
||||
console.error(e); |
||||
} |
||||
break; |
||||
case 'textBased': |
||||
for (let i = 0; i < recordCnt; i++) { |
||||
const row = { |
||||
SingleLineText: rowMixedValue(columns.textBased[1], i), |
||||
MultiLineText: rowMixedValue(columns.textBased[2], i), |
||||
Email: rowMixedValue(columns.textBased[3], i), |
||||
PhoneNumber: rowMixedValue(columns.textBased[4], i), |
||||
URL: rowMixedValue(columns.textBased[5], i), |
||||
}; |
||||
rowAttributes.push(row); |
||||
} |
||||
break; |
||||
case 'numberBased': |
||||
for (let i = 0; i < 400; i++) { |
||||
const row = { |
||||
Number: rowMixedValue(columns.numberBased[1], i), |
||||
Decimal: rowMixedValue(columns.numberBased[2], i), |
||||
Currency: rowMixedValue(columns.numberBased[3], i), |
||||
Percent: rowMixedValue(columns.numberBased[4], i), |
||||
Duration: rowMixedValue(columns.numberBased[5], i), |
||||
Rating: rowMixedValue(columns.numberBased[6], i), |
||||
Year: rowMixedValue(columns.numberBased[7], i), |
||||
Time: rowMixedValue(columns.numberBased[8], i, context.dbType), |
||||
}; |
||||
rowAttributes.push(row); |
||||
} |
||||
break; |
||||
case 'dateTimeBased': |
||||
try { |
||||
for (let i = 0; i < recordCnt; i++) { |
||||
const row = { |
||||
Date: rowMixedValue(columns.dateTimeBased[1], i), |
||||
}; |
||||
rowAttributes.push(row); |
||||
} |
||||
} catch (e) { |
||||
console.error(e); |
||||
} |
||||
break; |
||||
} |
||||
|
||||
await api.dbTableRow.bulkCreate('noco', context.project.id, table.id, rowAttributes); |
||||
return table; |
||||
} |
||||
|
||||
export { createDemoTable }; |
Loading…
Reference in new issue