feat: upgrade to node 24 and drizzle

This commit is contained in:
Aarnav Tale
2026-03-17 13:22:48 -04:00
parent dd0587dad1
commit b1361e9062
20 changed files with 1593 additions and 1094 deletions
+10 -8
View File
@@ -1,8 +1,10 @@
import { mkdir } from 'node:fs/promises';
import { dirname, resolve } from 'node:path';
import { migrate } from 'drizzle-orm/libsql/migrator';
import { drizzle } from 'drizzle-orm/libsql/sqlite3';
import log from '~/utils/log';
import { mkdir } from "node:fs/promises";
import { dirname, resolve } from "node:path";
import { drizzle } from "drizzle-orm/node-sqlite";
import { migrate } from "drizzle-orm/node-sqlite/migrator";
import log from "~/utils/log";
export async function createDbClient(path: string) {
const realPath = resolve(path);
@@ -10,8 +12,8 @@ export async function createDbClient(path: string) {
await mkdir(dirname(realPath), { recursive: true });
} catch (error) {
log.error(
'server',
'Failed to create directory for database at %s: %s',
"server",
"Failed to create directory for database at %s: %s",
realPath,
error instanceof Error ? error.message : String(error),
);
@@ -21,7 +23,7 @@ export async function createDbClient(path: string) {
// Turn the path into a URL with the file protocol
const db = drizzle(`file://${realPath}`);
migrate(db, {
migrationsFolder: './drizzle',
migrationsFolder: "./drizzle",
});
return db;
@@ -0,0 +1,40 @@
{
"dialect": "sqlite",
"id": "ab03ffcd-9aa5-4b4b-9f38-322acc6899a3",
"prevIds": ["00000000-0000-0000-0000-000000000000"],
"version": "7",
"ddl": [
{
"name": "ephemeral_nodes",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "auth_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"columns": ["auth_key"],
"nameExplicit": false,
"name": "ephemeral_nodes_pk",
"table": "ephemeral_nodes",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "node_key",
"table": "ephemeral_nodes",
"entityType": "columns"
}
],
"renames": []
}
@@ -0,0 +1,81 @@
{
"dialect": "sqlite",
"id": "16f780a3-a6e7-4810-94bb-fad5c6446ab4",
"prevIds": ["ab03ffcd-9aa5-4b4b-9f38-322acc6899a3"],
"version": "7",
"ddl": [
{
"name": "ephemeral_nodes",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "auth_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"columns": ["auth_key"],
"nameExplicit": false,
"name": "ephemeral_nodes_pk",
"table": "ephemeral_nodes",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "node_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"name": "host_info",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "host_id",
"table": "host_info",
"entityType": "columns"
},
{
"columns": ["host_id"],
"nameExplicit": false,
"name": "host_info_pk",
"table": "host_info",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "payload",
"table": "host_info",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "updated_at",
"table": "host_info",
"entityType": "columns"
}
],
"renames": []
}
@@ -0,0 +1,146 @@
{
"dialect": "sqlite",
"id": "2c18fbcb-d5f5-47c0-962d-54121cbb2e71",
"prevIds": ["16f780a3-a6e7-4810-94bb-fad5c6446ab4"],
"version": "7",
"ddl": [
{
"name": "ephemeral_nodes",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "auth_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"columns": ["auth_key"],
"nameExplicit": false,
"name": "ephemeral_nodes_pk",
"table": "ephemeral_nodes",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "node_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"name": "host_info",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "host_id",
"table": "host_info",
"entityType": "columns"
},
{
"columns": ["host_id"],
"nameExplicit": false,
"name": "host_info_pk",
"table": "host_info",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "payload",
"table": "host_info",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "updated_at",
"table": "host_info",
"entityType": "columns"
},
{
"name": "users",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "id",
"table": "users",
"entityType": "columns"
},
{
"columns": ["id"],
"nameExplicit": false,
"name": "users_pk",
"table": "users",
"entityType": "pks"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "sub",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": "0",
"generated": null,
"name": "caps",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": "false",
"generated": null,
"name": "onboarded",
"table": "users",
"entityType": "columns"
},
{
"columns": [
{
"value": "sub",
"isExpression": false
}
],
"isUnique": true,
"where": null,
"origin": "manual",
"name": "users_sub_unique",
"table": "users",
"entityType": "indexes"
}
],
"renames": []
}
@@ -0,0 +1,291 @@
{
"dialect": "sqlite",
"id": "e397c1d9-19a4-494a-9b87-5a94a093286a",
"prevIds": ["2c18fbcb-d5f5-47c0-962d-54121cbb2e71"],
"version": "7",
"ddl": [
{
"name": "auth_sessions",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "id",
"table": "auth_sessions",
"entityType": "columns"
},
{
"columns": ["id"],
"nameExplicit": false,
"name": "auth_sessions_pk",
"table": "auth_sessions",
"entityType": "pks"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "kind",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "user_id",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "api_key_hash",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "api_key_display",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "expires_at",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "created_at",
"table": "auth_sessions",
"entityType": "columns"
},
{
"name": "ephemeral_nodes",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "auth_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"columns": ["auth_key"],
"nameExplicit": false,
"name": "ephemeral_nodes_pk",
"table": "ephemeral_nodes",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "node_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"name": "host_info",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "host_id",
"table": "host_info",
"entityType": "columns"
},
{
"columns": ["host_id"],
"nameExplicit": false,
"name": "host_info_pk",
"table": "host_info",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "payload",
"table": "host_info",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "updated_at",
"table": "host_info",
"entityType": "columns"
},
{
"name": "users",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "id",
"table": "users",
"entityType": "columns"
},
{
"columns": ["id"],
"nameExplicit": false,
"name": "users_pk",
"table": "users",
"entityType": "pks"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "sub",
"table": "users",
"entityType": "columns"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": "'member'",
"generated": null,
"name": "role",
"table": "users",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "headscale_user_id",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": "false",
"generated": null,
"name": "onboarded",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "created_at",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "updated_at",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "last_login_at",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": "0",
"generated": null,
"name": "caps",
"table": "users",
"entityType": "columns"
},
{
"columns": [
{
"value": "sub",
"isExpression": false
}
],
"isUnique": true,
"where": null,
"origin": "manual",
"name": "users_sub_unique",
"table": "users",
"entityType": "indexes"
},
{
"columns": [
{
"value": "headscale_user_id",
"isExpression": false
}
],
"isUnique": true,
"where": null,
"origin": "manual",
"name": "users_headscale_user_id_unique",
"table": "users",
"entityType": "indexes"
}
],
"renames": []
}
@@ -0,0 +1,301 @@
{
"dialect": "sqlite",
"id": "6d6838a7-e7ab-4661-bc7d-b47566bfff13",
"prevIds": ["e397c1d9-19a4-494a-9b87-5a94a093286a"],
"version": "7",
"ddl": [
{
"name": "auth_sessions",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "id",
"table": "auth_sessions",
"entityType": "columns"
},
{
"columns": ["id"],
"nameExplicit": false,
"name": "auth_sessions_pk",
"table": "auth_sessions",
"entityType": "pks"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "kind",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "user_id",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "api_key_hash",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "api_key_display",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "expires_at",
"table": "auth_sessions",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "created_at",
"table": "auth_sessions",
"entityType": "columns"
},
{
"name": "ephemeral_nodes",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "auth_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"columns": ["auth_key"],
"nameExplicit": false,
"name": "ephemeral_nodes_pk",
"table": "ephemeral_nodes",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "node_key",
"table": "ephemeral_nodes",
"entityType": "columns"
},
{
"name": "host_info",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "host_id",
"table": "host_info",
"entityType": "columns"
},
{
"columns": ["host_id"],
"nameExplicit": false,
"name": "host_info_pk",
"table": "host_info",
"entityType": "pks"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "payload",
"table": "host_info",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "updated_at",
"table": "host_info",
"entityType": "columns"
},
{
"name": "users",
"entityType": "tables"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "id",
"table": "users",
"entityType": "columns"
},
{
"columns": ["id"],
"nameExplicit": false,
"name": "users_pk",
"table": "users",
"entityType": "pks"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "sub",
"table": "users",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "name",
"table": "users",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "email",
"table": "users",
"entityType": "columns"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": "'member'",
"generated": null,
"name": "role",
"table": "users",
"entityType": "columns"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "headscale_user_id",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "created_at",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "updated_at",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "last_login_at",
"table": "users",
"entityType": "columns"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": "0",
"generated": null,
"name": "caps",
"table": "users",
"entityType": "columns"
},
{
"columns": [
{
"value": "sub",
"isExpression": false
}
],
"isUnique": true,
"where": null,
"origin": "manual",
"name": "users_sub_unique",
"table": "users",
"entityType": "indexes"
},
{
"columns": [
{
"value": "headscale_user_id",
"isExpression": false
}
],
"isUnique": true,
"where": null,
"origin": "manual",
"name": "users_headscale_user_id_unique",
"table": "users",
"entityType": "indexes"
}
],
"renames": []
}
-42
View File
@@ -1,42 +0,0 @@
{
"version": "6",
"dialect": "sqlite",
"id": "ab03ffcd-9aa5-4b4b-9f38-322acc6899a3",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"ephemeral_nodes": {
"name": "ephemeral_nodes",
"columns": {
"auth_key": {
"name": "auth_key",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"node_key": {
"name": "node_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}
-73
View File
@@ -1,73 +0,0 @@
{
"version": "6",
"dialect": "sqlite",
"id": "16f780a3-a6e7-4810-94bb-fad5c6446ab4",
"prevId": "ab03ffcd-9aa5-4b4b-9f38-322acc6899a3",
"tables": {
"ephemeral_nodes": {
"name": "ephemeral_nodes",
"columns": {
"auth_key": {
"name": "auth_key",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"node_key": {
"name": "node_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"host_info": {
"name": "host_info",
"columns": {
"host_id": {
"name": "host_id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"payload": {
"name": "payload",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}
-119
View File
@@ -1,119 +0,0 @@
{
"version": "6",
"dialect": "sqlite",
"id": "2c18fbcb-d5f5-47c0-962d-54121cbb2e71",
"prevId": "16f780a3-a6e7-4810-94bb-fad5c6446ab4",
"tables": {
"ephemeral_nodes": {
"name": "ephemeral_nodes",
"columns": {
"auth_key": {
"name": "auth_key",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"node_key": {
"name": "node_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"host_info": {
"name": "host_info",
"columns": {
"host_id": {
"name": "host_id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"payload": {
"name": "payload",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"sub": {
"name": "sub",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"caps": {
"name": "caps",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"onboarded": {
"name": "onboarded",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
}
},
"indexes": {
"users_sub_unique": {
"name": "users_sub_unique",
"columns": ["sub"],
"isUnique": true
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}
-219
View File
@@ -1,219 +0,0 @@
{
"version": "6",
"dialect": "sqlite",
"id": "e397c1d9-19a4-494a-9b87-5a94a093286a",
"prevId": "2c18fbcb-d5f5-47c0-962d-54121cbb2e71",
"tables": {
"auth_sessions": {
"name": "auth_sessions",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"kind": {
"name": "kind",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"api_key_hash": {
"name": "api_key_hash",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"api_key_display": {
"name": "api_key_display",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"ephemeral_nodes": {
"name": "ephemeral_nodes",
"columns": {
"auth_key": {
"name": "auth_key",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"node_key": {
"name": "node_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"host_info": {
"name": "host_info",
"columns": {
"host_id": {
"name": "host_id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"payload": {
"name": "payload",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"sub": {
"name": "sub",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"role": {
"name": "role",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'member'"
},
"headscale_user_id": {
"name": "headscale_user_id",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"onboarded": {
"name": "onboarded",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"last_login_at": {
"name": "last_login_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"caps": {
"name": "caps",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
}
},
"indexes": {
"users_sub_unique": {
"name": "users_sub_unique",
"columns": ["sub"],
"isUnique": true
},
"users_headscale_user_id_unique": {
"name": "users_headscale_user_id_unique",
"columns": ["headscale_user_id"],
"isUnique": true
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}
-225
View File
@@ -1,225 +0,0 @@
{
"version": "6",
"dialect": "sqlite",
"id": "6d6838a7-e7ab-4661-bc7d-b47566bfff13",
"prevId": "e397c1d9-19a4-494a-9b87-5a94a093286a",
"tables": {
"auth_sessions": {
"name": "auth_sessions",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"kind": {
"name": "kind",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"api_key_hash": {
"name": "api_key_hash",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"api_key_display": {
"name": "api_key_display",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"ephemeral_nodes": {
"name": "ephemeral_nodes",
"columns": {
"auth_key": {
"name": "auth_key",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"node_key": {
"name": "node_key",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"host_info": {
"name": "host_info",
"columns": {
"host_id": {
"name": "host_id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"payload": {
"name": "payload",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"users": {
"name": "users",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"sub": {
"name": "sub",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"email": {
"name": "email",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"role": {
"name": "role",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'member'"
},
"headscale_user_id": {
"name": "headscale_user_id",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"created_at": {
"name": "created_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"updated_at": {
"name": "updated_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"last_login_at": {
"name": "last_login_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"caps": {
"name": "caps",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
}
},
"indexes": {
"users_sub_unique": {
"name": "users_sub_unique",
"columns": ["sub"],
"isUnique": true
},
"users_headscale_user_id_unique": {
"name": "users_headscale_user_id_unique",
"columns": ["headscale_user_id"],
"isUnique": true
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}
-41
View File
@@ -1,41 +0,0 @@
{
"version": "7",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "6",
"when": 1750355487927,
"tag": "0000_spicy_bloodscream",
"breakpoints": true
},
{
"idx": 1,
"version": "6",
"when": 1755554742267,
"tag": "0001_naive_lilith",
"breakpoints": true
},
{
"idx": 2,
"version": "6",
"when": 1755617607599,
"tag": "0002_square_bloodstorm",
"breakpoints": true
},
{
"idx": 3,
"version": "6",
"when": 1772917638504,
"tag": "0003_thick_otto_octavius",
"breakpoints": true
},
{
"idx": 4,
"version": "6",
"when": 1773505790202,
"tag": "0004_nappy_praxagora",
"breakpoints": true
}
]
}
+4 -11
View File
@@ -1,7 +1,7 @@
[tools]
go = "1.25.1"
pnpm = "10.4.0"
node = "22.18"
node = "24.2"
[tasks.build-nixos-docs]
alias = ["nixos-docs"]
@@ -9,23 +9,16 @@ description = "Builds NixOS module documentation"
run = [
'nix build .#headplane-nixos-docs',
'cp --dereference --force ./result ./docs/NixOS-options.md',
'sed -i "s;\[/nix.*;\[nix/options.nix\](https://github.com/tale/headplane/blob/main/nix/options.nix);" ./docs/NixOS-options.md'
'sed -i "s;\[/nix.*;\[nix/options.nix\](https://github.com/tale/headplane/blob/main/nix/options.nix);" ./docs/NixOS-options.md',
]
[tasks.generate-caddy-certs]
alias = ["mkcert"]
dir = "{{cwd}}/test/caddy/certs"
run = [
"mkdir -p {{cwd}}/test/caddy/certs",
"mkcert -install",
"mkcert localhost"
]
run = ["mkdir -p {{cwd}}/test/caddy/certs", "mkcert -install", "mkcert localhost"]
[tasks.ci]
description = "Runs the CI pipeline"
depends = ["build-go-wasm"]
depends_post = ["build-go-agent"]
run = [
"pnpm install",
"pnpm run build"
]
run = ["pnpm install", "pnpm run build"]
+4 -4
View File
@@ -54,10 +54,10 @@
"@xterm/xterm": "^6.0.0",
"arktype": "^2.1.29",
"clsx": "^2.1.1",
"drizzle-kit": "^0.31.9",
"drizzle-orm": "0.45.1",
"drizzle-kit": "1.0.0-beta.16-c2458b2",
"drizzle-orm": "1.0.0-beta.16-c2458b2",
"isbot": "5.1.35",
"jose": "6.1.3",
"jose": "6.2.1",
"js-yaml": "^4.1.1",
"lefthook": "^2.1.1",
"lucide-react": "^0.575.0",
@@ -94,7 +94,7 @@
"yaml": "2.8.2"
},
"engines": {
"node": ">=22.18 <23",
"node": ">=24.2 <25",
"pnpm": ">=10.4 <11"
},
"packageManager": "pnpm@10.4.0",
+699 -335
View File
File diff suppressed because it is too large Load Diff