Skip to content

Commit 3379ae3

Browse files
authored
Merge pull request #11 from SecJS/refactor/len-primary-key-insert-update
feat: add timestamps property to table builder
2 parents c710562 + 30a223a commit 3379ae3

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@secjs/database",
3-
"version": "1.0.6",
3+
"version": "1.0.7",
44
"description": "Handle your application database with factories, seeders and query builder in Node.js",
55
"license": "MIT",
66
"author": "João Lenon <lenon@secjs.com.br>",

src/Builders/TableBuilder.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99

1010
import { ColumnBuilder } from './ColumnBuilder'
11+
import { String } from '@secjs/utils'
1112

1213
export class TableBuilder {
1314
private columns: ColumnBuilder[] = []
@@ -63,4 +64,35 @@ export class TableBuilder {
6364

6465
return column
6566
}
67+
68+
timestamps(
69+
useTimestamps = true,
70+
defaultToNow = true,
71+
useCamelCase = false,
72+
): void {
73+
let createdAtName = 'created_at'
74+
let updatedAtName = 'updated_at'
75+
76+
if (useCamelCase) {
77+
createdAtName = String.toCamelCase(createdAtName)
78+
updatedAtName = String.toCamelCase(updatedAtName)
79+
}
80+
81+
const createdAtColumn = new ColumnBuilder(createdAtName, 'date')
82+
const updatedAtColumn = new ColumnBuilder(updatedAtName, 'date')
83+
84+
if (defaultToNow) {
85+
let now: number | Date = new Date()
86+
87+
if (useTimestamps) {
88+
now = Date.now()
89+
}
90+
91+
createdAtColumn.defaultTo(now)
92+
updatedAtColumn.defaultTo(now)
93+
}
94+
95+
this.columns.push(createdAtColumn)
96+
this.columns.push(updatedAtColumn)
97+
}
6698
}

0 commit comments

Comments
 (0)