feat: add the snippets plugin (B2)

This commit is contained in:
LukeGus committed 2026-09-23 08:59:16 -05:00
1 parent 1eac0f54b0
commit 3656caf168
29 files changed
+5293

No files matched your search

@@ -0,0 +1,43 @@
-- snippets 0001: adopt_snippets_tables
-- Generated by termix-plugin migrations. Review before committing.
CREATE TABLE IF NOT EXISTS `snippets` (
`id` int AUTO_INCREMENT PRIMARY KEY,
`user_id` varchar(255) NOT NULL,
`name` text NOT NULL,
`content` text NOT NULL,
`description` text,
`folder` text,
`order` int NOT NULL DEFAULT 0,
`sync_id` varchar(255) UNIQUE,
`created_at` text NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_at` text NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`host_filter` text,
`is_note` boolean NOT NULL DEFAULT false,
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
);
RENAME TABLE `snippets` TO `p_snippets_snippets`;
CREATE TABLE IF NOT EXISTS `snippet_folders` (
`id` int AUTO_INCREMENT PRIMARY KEY,
`user_id` varchar(255) NOT NULL,
`name` text NOT NULL,
`color` text,
`icon` text,
`sync_id` varchar(255) UNIQUE,
`created_at` text NOT NULL DEFAULT (CURRENT_TIMESTAMP),
`updated_at` text NOT NULL DEFAULT (CURRENT_TIMESTAMP),
FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
);
RENAME TABLE `snippet_folders` TO `p_snippets_snippet_folders`;
CREATE TABLE IF NOT EXISTS `snippet_access` (
`id` int AUTO_INCREMENT PRIMARY KEY,
`snippet_id` int NOT NULL,
`user_id` varchar(255),
`role_id` int,
`granted_by` varchar(255) NOT NULL,
`permission_level` text NOT NULL DEFAULT ('view'),
`expires_at` text,
`created_at` text NOT NULL DEFAULT (CURRENT_TIMESTAMP),
FOREIGN KEY (`granted_by`) REFERENCES `users` (`id`) ON DELETE CASCADE
);
RENAME TABLE `snippet_access` TO `p_snippets_snippet_access`;
@@ -0,0 +1,47 @@
-- snippets 0001: adopt_snippets_tables
-- Generated by termix-plugin migrations. Review before committing.
CREATE TABLE IF NOT EXISTS "snippets" (
"id" serial PRIMARY KEY,
"user_id" varchar(255) NOT NULL,
"name" text NOT NULL,
"content" text NOT NULL,
"description" text,
"folder" text,
"order" integer NOT NULL DEFAULT 0,
"sync_id" varchar(255) UNIQUE,
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
"host_filter" text,
"is_note" boolean NOT NULL DEFAULT false,
FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_snippets_user_id" ON "snippets" ("user_id");
ALTER TABLE "snippets" RENAME TO "p_snippets_snippets";
CREATE TABLE IF NOT EXISTS "snippet_folders" (
"id" serial PRIMARY KEY,
"user_id" varchar(255) NOT NULL,
"name" text NOT NULL,
"color" text,
"icon" text,
"sync_id" varchar(255) UNIQUE,
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE
);
ALTER TABLE "snippet_folders" RENAME TO "p_snippets_snippet_folders";
CREATE TABLE IF NOT EXISTS "snippet_access" (
"id" serial PRIMARY KEY,
"snippet_id" integer NOT NULL,
"user_id" varchar(255),
"role_id" integer,
"granted_by" varchar(255) NOT NULL,
"permission_level" text NOT NULL DEFAULT 'view',
"expires_at" text,
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY ("granted_by") REFERENCES "users" ("id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_snippet_access_user_id" ON "snippet_access" ("user_id");
CREATE INDEX IF NOT EXISTS "idx_snippet_access_snippet_id" ON "snippet_access" ("snippet_id");
CREATE INDEX IF NOT EXISTS "idx_snippet_access_role_id" ON "snippet_access" ("role_id");
ALTER TABLE "snippet_access" RENAME TO "p_snippets_snippet_access";
+162
View File
@@ -0,0 +1,162 @@
{
"version": 1,
"tables": {
"snippets": {
"columns": {
"id": {
"type": "id",
"primaryKey": true,
"notNull": true
},
"userId": {
"type": "refUser",
"length": 255,
"notNull": true
},
"name": {
"type": "text",
"notNull": true
},
"content": {
"type": "text",
"notNull": true
},
"description": {
"type": "text"
},
"folder": {
"type": "text"
},
"order": {
"type": "integer",
"notNull": true,
"defaultValue": 0
},
"syncId": {
"type": "varchar",
"length": 255,
"unique": true
},
"createdAt": {
"type": "timestamp",
"notNull": true,
"defaultNow": true
},
"updatedAt": {
"type": "timestamp",
"notNull": true,
"defaultNow": true
},
"hostFilter": {
"type": "text"
},
"isNote": {
"type": "boolean",
"notNull": true,
"defaultValue": false
}
},
"indexes": [
{
"name": "idx_snippets_user_id",
"columns": ["userId"]
}
],
"adopts": "snippets"
},
"snippet_folders": {
"columns": {
"id": {
"type": "id",
"primaryKey": true,
"notNull": true
},
"userId": {
"type": "refUser",
"length": 255,
"notNull": true
},
"name": {
"type": "text",
"notNull": true
},
"color": {
"type": "text"
},
"icon": {
"type": "text"
},
"syncId": {
"type": "varchar",
"length": 255,
"unique": true
},
"createdAt": {
"type": "timestamp",
"notNull": true,
"defaultNow": true
},
"updatedAt": {
"type": "timestamp",
"notNull": true,
"defaultNow": true
}
},
"indexes": [],
"adopts": "snippet_folders"
},
"snippet_access": {
"columns": {
"id": {
"type": "id",
"primaryKey": true,
"notNull": true
},
"snippetId": {
"type": "integer",
"notNull": true
},
"userId": {
"type": "varchar",
"length": 255
},
"roleId": {
"type": "integer"
},
"grantedBy": {
"type": "refUser",
"length": 255,
"notNull": true
},
"permissionLevel": {
"type": "text",
"notNull": true,
"defaultValue": "view"
},
"expiresAt": {
"type": "timestamp"
},
"createdAt": {
"type": "timestamp",
"notNull": true,
"defaultNow": true
}
},
"indexes": [
{
"name": "idx_snippet_access_user_id",
"columns": ["userId"]
},
{
"name": "idx_snippet_access_snippet_id",
"columns": ["snippetId"]
},
{
"name": "idx_snippet_access_role_id",
"columns": ["roleId"]
}
],
"adopts": "snippet_access"
}
}
}
@@ -0,0 +1,47 @@
-- snippets 0001: adopt_snippets_tables
-- Generated by termix-plugin migrations. Review before committing.
CREATE TABLE IF NOT EXISTS "snippets" (
"id" integer PRIMARY KEY AUTOINCREMENT,
"user_id" text NOT NULL,
"name" text NOT NULL,
"content" text NOT NULL,
"description" text,
"folder" text,
"order" integer NOT NULL DEFAULT 0,
"sync_id" text UNIQUE,
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
"host_filter" text,
"is_note" integer NOT NULL DEFAULT 0,
FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_snippets_user_id" ON "snippets" ("user_id");
ALTER TABLE "snippets" RENAME TO "p_snippets_snippets";
CREATE TABLE IF NOT EXISTS "snippet_folders" (
"id" integer PRIMARY KEY AUTOINCREMENT,
"user_id" text NOT NULL,
"name" text NOT NULL,
"color" text,
"icon" text,
"sync_id" text UNIQUE,
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE
);
ALTER TABLE "snippet_folders" RENAME TO "p_snippets_snippet_folders";
CREATE TABLE IF NOT EXISTS "snippet_access" (
"id" integer PRIMARY KEY AUTOINCREMENT,
"snippet_id" integer NOT NULL,
"user_id" text,
"role_id" integer,
"granted_by" text NOT NULL,
"permission_level" text NOT NULL DEFAULT 'view',
"expires_at" text,
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY ("granted_by") REFERENCES "users" ("id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_snippet_access_user_id" ON "snippet_access" ("user_id");
CREATE INDEX IF NOT EXISTS "idx_snippet_access_snippet_id" ON "snippet_access" ("snippet_id");
CREATE INDEX IF NOT EXISTS "idx_snippet_access_role_id" ON "snippet_access" ("role_id");
ALTER TABLE "snippet_access" RENAME TO "p_snippets_snippet_access";