feat(database): Improve database definition to add sizes
This commit is contained in:
parent
ec0aa5654c
commit
a3c1bae6db
6 changed files with 38 additions and 30 deletions
|
|
@ -5,6 +5,7 @@ export type DatabaseColumnDefinition = {
|
|||
autoIncrement?: boolean;
|
||||
notNull?: boolean;
|
||||
options?: string;
|
||||
size?: number;
|
||||
}
|
||||
|
||||
export type DatabaseDefinition = {
|
||||
|
|
|
|||
|
|
@ -48,33 +48,21 @@ export class DatabaseUpdater {
|
|||
const columnsSQL = missingColumns.map((column: DatabaseColumnDefinition) => {
|
||||
const values = [
|
||||
"ADD",
|
||||
column.name,
|
||||
column.type,
|
||||
column.primaryKey ? `PRIMARY KEY` : '',
|
||||
column.notNull ? 'NOT NULL' : '',
|
||||
column.autoIncrement ? 'AUTOINCREMENT' : '',
|
||||
this.getSQLColumnDefinition(column)
|
||||
]
|
||||
|
||||
return values.join(' ');
|
||||
}).join(', ');
|
||||
|
||||
const sql = `ALTER TABLE ${definition.name} ${columnsSQL}`;
|
||||
this.database.execute(sql);
|
||||
console.log(sql);
|
||||
}
|
||||
|
||||
|
||||
private createTable(definition: DatabaseDefinition) {
|
||||
const columnsSQL = definition.columns.map((column: DatabaseColumnDefinition) => {
|
||||
const values = [
|
||||
column.name,
|
||||
column.type,
|
||||
column.primaryKey ? `PRIMARY KEY` : '',
|
||||
column.notNull ? 'NOT NULL' : '',
|
||||
column.autoIncrement ? 'AUTOINCREMENT' : '',
|
||||
]
|
||||
|
||||
return values.join(' ');
|
||||
}).join(', ');
|
||||
const columnsSQL = definition.columns.map((column: DatabaseColumnDefinition) =>
|
||||
this.getSQLColumnDefinition(column)
|
||||
).join(', ');
|
||||
|
||||
const sql = `CREATE TABLE IF NOT EXISTS ${definition.name}
|
||||
(
|
||||
|
|
@ -82,4 +70,16 @@ export class DatabaseUpdater {
|
|||
)`;
|
||||
this.database.execute(sql);
|
||||
}
|
||||
|
||||
private getSQLColumnDefinition(column: DatabaseColumnDefinition) {
|
||||
const values = [
|
||||
column.name,
|
||||
`${column.type}${column.size ? `(${column.size})` : ''}`,
|
||||
column.primaryKey ? `PRIMARY KEY` : '',
|
||||
column.notNull ? 'NOT NULL' : '',
|
||||
column.autoIncrement ? 'AUTOINCREMENT' : '',
|
||||
];
|
||||
|
||||
return values.join(' ')
|
||||
}
|
||||
}
|
||||
|
|
@ -18,15 +18,17 @@ const dbDefinition: DatabaseDefinition = {
|
|||
},
|
||||
{
|
||||
name: "groupid",
|
||||
type: "VARCHAR(32)",
|
||||
type: "INTEGER",
|
||||
},
|
||||
{
|
||||
name: "key",
|
||||
type: "VARCHAR(32)",
|
||||
type: "VARCHAR",
|
||||
size: 32
|
||||
},
|
||||
{
|
||||
name: "value",
|
||||
type: "VARCHAR(128)",
|
||||
type: "VARCHAR",
|
||||
size: 2 ^ 11
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,19 +19,23 @@ const dbDefinition: DatabaseDefinition = {
|
|||
},
|
||||
{
|
||||
name: "server",
|
||||
type: "VARCHAR(32)"
|
||||
type: "VARCHAR",
|
||||
size: 32
|
||||
},
|
||||
{
|
||||
name: "name",
|
||||
type: "VARCHAR(32)",
|
||||
type: "VARCHAR",
|
||||
size: 32
|
||||
},
|
||||
{
|
||||
name: "leader",
|
||||
type: "VARCHAR(32)",
|
||||
type: "VARCHAR",
|
||||
size: 32
|
||||
},
|
||||
{
|
||||
name: "role",
|
||||
type: "VARCHAR(32)",
|
||||
type: "VARCHAR",
|
||||
size: 32
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue