mirror of
https://github.com/LukeHagar/better-auth.git
synced 2025-12-06 04:19:20 +00:00
fix(cli): timestamp in schema for Drizzle with SQLite (#4622)
This commit is contained in:
@@ -104,7 +104,7 @@ export const generateDrizzleSchema: SchemaGenerator = async ({
|
|||||||
: `int('${name}')`,
|
: `int('${name}')`,
|
||||||
},
|
},
|
||||||
date: {
|
date: {
|
||||||
sqlite: `integer('${name}', { mode: 'timestamp' })`,
|
sqlite: `integer('${name}', { mode: 'timestamp_ms' })`,
|
||||||
pg: `timestamp('${name}')`,
|
pg: `timestamp('${name}')`,
|
||||||
mysql: `timestamp('${name}')`,
|
mysql: `timestamp('${name}')`,
|
||||||
},
|
},
|
||||||
@@ -170,7 +170,7 @@ export const generateDrizzleSchema: SchemaGenerator = async ({
|
|||||||
attr.defaultValue.toString().includes("new Date()")
|
attr.defaultValue.toString().includes("new Date()")
|
||||||
) {
|
) {
|
||||||
if (databaseType === "sqlite") {
|
if (databaseType === "sqlite") {
|
||||||
type += `.default(sql\`(current_timestamp)\`)`;
|
type += `.default(sql\`(cast(unixepoch('subsecond') * 1000 as integer))\`)`;
|
||||||
} else {
|
} else {
|
||||||
type += `.defaultNow()`;
|
type += `.defaultNow()`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ export const custom_user = sqliteTable("custom_user", {
|
|||||||
.default(false)
|
.default(false)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
image: text("image"),
|
image: text("image"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
twoFactorEnabled: integer("two_factor_enabled", { mode: "boolean" }).default(
|
twoFactorEnabled: integer("two_factor_enabled", { mode: "boolean" }).default(
|
||||||
@@ -25,12 +25,12 @@ export const custom_user = sqliteTable("custom_user", {
|
|||||||
|
|
||||||
export const custom_session = sqliteTable("custom_session", {
|
export const custom_session = sqliteTable("custom_session", {
|
||||||
id: int("id").primaryKey(),
|
id: int("id").primaryKey(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
token: text("token").notNull().unique(),
|
token: text("token").notNull().unique(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
ipAddress: text("ip_address"),
|
ipAddress: text("ip_address"),
|
||||||
@@ -51,17 +51,17 @@ export const custom_account = sqliteTable("custom_account", {
|
|||||||
refreshToken: text("refresh_token"),
|
refreshToken: text("refresh_token"),
|
||||||
idToken: text("id_token"),
|
idToken: text("id_token"),
|
||||||
accessTokenExpiresAt: integer("access_token_expires_at", {
|
accessTokenExpiresAt: integer("access_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
scope: text("scope"),
|
scope: text("scope"),
|
||||||
password: text("password"),
|
password: text("password"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
@@ -70,12 +70,12 @@ export const custom_verification = sqliteTable("custom_verification", {
|
|||||||
id: int("id").primaryKey(),
|
id: int("id").primaryKey(),
|
||||||
identifier: text("identifier").notNull(),
|
identifier: text("identifier").notNull(),
|
||||||
value: text("value").notNull(),
|
value: text("value").notNull(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,23 +9,23 @@ export const custom_user = sqliteTable("custom_user", {
|
|||||||
.default(false)
|
.default(false)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
image: text("image"),
|
image: text("image"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const custom_session = sqliteTable("custom_session", {
|
export const custom_session = sqliteTable("custom_session", {
|
||||||
id: int("id").primaryKey(),
|
id: int("id").primaryKey(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
token: text("token").notNull().unique(),
|
token: text("token").notNull().unique(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
ipAddress: text("ip_address"),
|
ipAddress: text("ip_address"),
|
||||||
@@ -46,17 +46,17 @@ export const custom_account = sqliteTable("custom_account", {
|
|||||||
refreshToken: text("refresh_token"),
|
refreshToken: text("refresh_token"),
|
||||||
idToken: text("id_token"),
|
idToken: text("id_token"),
|
||||||
accessTokenExpiresAt: integer("access_token_expires_at", {
|
accessTokenExpiresAt: integer("access_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
scope: text("scope"),
|
scope: text("scope"),
|
||||||
password: text("password"),
|
password: text("password"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
@@ -65,12 +65,12 @@ export const custom_verification = sqliteTable("custom_verification", {
|
|||||||
id: int("id").primaryKey(),
|
id: int("id").primaryKey(),
|
||||||
identifier: text("identifier").notNull(),
|
identifier: text("identifier").notNull(),
|
||||||
value: text("value").notNull(),
|
value: text("value").notNull(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
@@ -87,6 +87,6 @@ export const passkey = sqliteTable("passkey", {
|
|||||||
deviceType: text("device_type").notNull(),
|
deviceType: text("device_type").notNull(),
|
||||||
backedUp: integer("backed_up", { mode: "boolean" }).notNull(),
|
backedUp: integer("backed_up", { mode: "boolean" }).notNull(),
|
||||||
transports: text("transports"),
|
transports: text("transports"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" }),
|
createdAt: integer("created_at", { mode: "timestamp_ms" }),
|
||||||
aaguid: text("aaguid"),
|
aaguid: text("aaguid"),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,23 +9,23 @@ export const custom_user = sqliteTable("custom_user", {
|
|||||||
.default(false)
|
.default(false)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
image: text("image"),
|
image: text("image"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const custom_session = sqliteTable("custom_session", {
|
export const custom_session = sqliteTable("custom_session", {
|
||||||
id: text("id").primaryKey(),
|
id: text("id").primaryKey(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
token: text("token").notNull().unique(),
|
token: text("token").notNull().unique(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
ipAddress: text("ip_address"),
|
ipAddress: text("ip_address"),
|
||||||
@@ -46,17 +46,17 @@ export const custom_account = sqliteTable("custom_account", {
|
|||||||
refreshToken: text("refresh_token"),
|
refreshToken: text("refresh_token"),
|
||||||
idToken: text("id_token"),
|
idToken: text("id_token"),
|
||||||
accessTokenExpiresAt: integer("access_token_expires_at", {
|
accessTokenExpiresAt: integer("access_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
scope: text("scope"),
|
scope: text("scope"),
|
||||||
password: text("password"),
|
password: text("password"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
@@ -65,12 +65,12 @@ export const custom_verification = sqliteTable("custom_verification", {
|
|||||||
id: text("id").primaryKey(),
|
id: text("id").primaryKey(),
|
||||||
identifier: text("identifier").notNull(),
|
identifier: text("identifier").notNull(),
|
||||||
value: text("value").notNull(),
|
value: text("value").notNull(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
@@ -87,6 +87,6 @@ export const passkey = sqliteTable("passkey", {
|
|||||||
deviceType: text("device_type").notNull(),
|
deviceType: text("device_type").notNull(),
|
||||||
backedUp: integer("backed_up", { mode: "boolean" }).notNull(),
|
backedUp: integer("backed_up", { mode: "boolean" }).notNull(),
|
||||||
transports: text("transports"),
|
transports: text("transports"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" }),
|
createdAt: integer("created_at", { mode: "timestamp_ms" }),
|
||||||
aaguid: text("aaguid"),
|
aaguid: text("aaguid"),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ export const custom_user = sqliteTable("custom_user", {
|
|||||||
.default(false)
|
.default(false)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
image: text("image"),
|
image: text("image"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
twoFactorEnabled: integer("two_factor_enabled", { mode: "boolean" }).default(
|
twoFactorEnabled: integer("two_factor_enabled", { mode: "boolean" }).default(
|
||||||
@@ -25,12 +25,12 @@ export const custom_user = sqliteTable("custom_user", {
|
|||||||
|
|
||||||
export const custom_session = sqliteTable("custom_session", {
|
export const custom_session = sqliteTable("custom_session", {
|
||||||
id: text("id").primaryKey(),
|
id: text("id").primaryKey(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
token: text("token").notNull().unique(),
|
token: text("token").notNull().unique(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
ipAddress: text("ip_address"),
|
ipAddress: text("ip_address"),
|
||||||
@@ -51,17 +51,17 @@ export const custom_account = sqliteTable("custom_account", {
|
|||||||
refreshToken: text("refresh_token"),
|
refreshToken: text("refresh_token"),
|
||||||
idToken: text("id_token"),
|
idToken: text("id_token"),
|
||||||
accessTokenExpiresAt: integer("access_token_expires_at", {
|
accessTokenExpiresAt: integer("access_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
refreshTokenExpiresAt: integer("refresh_token_expires_at", {
|
||||||
mode: "timestamp",
|
mode: "timestamp_ms",
|
||||||
}),
|
}),
|
||||||
scope: text("scope"),
|
scope: text("scope"),
|
||||||
password: text("password"),
|
password: text("password"),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
@@ -70,12 +70,12 @@ export const custom_verification = sqliteTable("custom_verification", {
|
|||||||
id: text("id").primaryKey(),
|
id: text("id").primaryKey(),
|
||||||
identifier: text("identifier").notNull(),
|
identifier: text("identifier").notNull(),
|
||||||
value: text("value").notNull(),
|
value: text("value").notNull(),
|
||||||
expiresAt: integer("expires_at", { mode: "timestamp" }).notNull(),
|
expiresAt: integer("expires_at", { mode: "timestamp_ms" }).notNull(),
|
||||||
createdAt: integer("created_at", { mode: "timestamp" })
|
createdAt: integer("created_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.notNull(),
|
.notNull(),
|
||||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
updatedAt: integer("updated_at", { mode: "timestamp_ms" })
|
||||||
.default(sql`(current_timestamp)`)
|
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
|
||||||
.$onUpdate(() => /* @__PURE__ */ new Date())
|
.$onUpdate(() => /* @__PURE__ */ new Date())
|
||||||
.notNull(),
|
.notNull(),
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user