FileRepo의 함수 중 디렉터리 관련된 함수들을 DirectoryRepo로 분리

This commit is contained in:
static
2026-01-18 12:34:04 +09:00
parent 14693160b8
commit 4797ccfd23
19 changed files with 417 additions and 562 deletions

View File

@@ -1,7 +1,7 @@
import type { Generated } from "kysely";
import type { Ciphertext } from "./utils";
interface CategoryTable {
export interface CategoryTable {
id: Generated<number>;
parent_id: number | null;
user_id: number;
@@ -11,7 +11,7 @@ interface CategoryTable {
encrypted_name: Ciphertext;
}
interface CategoryLogTable {
export interface CategoryLogTable {
id: Generated<number>;
category_id: number;
timestamp: Date;

View File

@@ -1,6 +1,6 @@
import type { ColumnType, Generated } from "kysely";
interface ClientTable {
export interface ClientTable {
id: Generated<number>;
encryption_public_key: string; // Base64
signature_public_key: string; // Base64
@@ -8,13 +8,13 @@ interface ClientTable {
export type UserClientState = "challenging" | "pending" | "active";
interface UserClientTable {
export interface UserClientTable {
user_id: number;
client_id: number;
state: ColumnType<UserClientState, UserClientState | undefined>;
}
interface UserClientChallengeTable {
export interface UserClientChallengeTable {
id: Generated<number>;
user_id: number;
client_id: number;

View File

@@ -0,0 +1,28 @@
import type { ColumnType, Generated } from "kysely";
import type { Ciphertext } from "./utils";
export interface DirectoryTable {
id: Generated<number>;
parent_id: number | null;
user_id: number;
master_encryption_key_version: number;
encrypted_data_encryption_key: string; // Base64
data_encryption_key_version: Date;
encrypted_name: Ciphertext;
is_favorite: Generated<boolean>;
}
export interface DirectoryLogTable {
id: Generated<number>;
directory_id: number;
timestamp: ColumnType<Date, Date, never>;
action: "create" | "rename" | "add-to-favorites" | "remove-from-favorites";
new_name: Ciphertext | null;
}
declare module "./index" {
interface Database {
directory: DirectoryTable;
directory_log: DirectoryLogTable;
}
}

View File

@@ -1,26 +1,7 @@
import type { ColumnType, Generated } from "kysely";
import type { Ciphertext } from "./utils";
interface DirectoryTable {
id: Generated<number>;
parent_id: number | null;
user_id: number;
master_encryption_key_version: number;
encrypted_data_encryption_key: string; // Base64
data_encryption_key_version: Date;
encrypted_name: Ciphertext;
is_favorite: Generated<boolean>;
}
interface DirectoryLogTable {
id: Generated<number>;
directory_id: number;
timestamp: ColumnType<Date, Date, never>;
action: "create" | "rename" | "add-to-favorites" | "remove-from-favorites";
new_name: Ciphertext | null;
}
interface FileTable {
export interface FileTable {
id: Generated<number>;
parent_id: number | null;
user_id: number;
@@ -39,7 +20,7 @@ interface FileTable {
is_favorite: Generated<boolean>;
}
interface FileLogTable {
export interface FileLogTable {
id: Generated<number>;
file_id: number;
timestamp: ColumnType<Date, Date, never>;
@@ -55,15 +36,13 @@ interface FileLogTable {
category_id: number | null;
}
interface FileCategoryTable {
export interface FileCategoryTable {
file_id: number;
category_id: number;
}
declare module "./index" {
interface Database {
directory: DirectoryTable;
directory_log: DirectoryLogTable;
file: FileTable;
file_log: FileLogTable;
file_category: FileCategoryTable;

View File

@@ -2,7 +2,7 @@ import type { ColumnType, Generated } from "kysely";
export type HskState = "active";
interface HskTable {
export interface HskTable {
user_id: number;
version: number;
state: HskState;
@@ -10,7 +10,7 @@ interface HskTable {
encrypted_key: string; // Base64
}
interface HskLogTable {
export interface HskLogTable {
id: Generated<number>;
user_id: number;
hmac_secret_key_version: number;

View File

@@ -1,5 +1,6 @@
export * from "./category";
export * from "./client";
export * from "./directory";
export * from "./file";
export * from "./hsk";
export * from "./media";

View File

@@ -1,6 +1,6 @@
import type { Generated } from "kysely";
interface ThumbnailTable {
export interface ThumbnailTable {
id: Generated<number>;
directory_id: number | null;
file_id: number | null;

View File

@@ -2,13 +2,13 @@ import type { ColumnType, Generated } from "kysely";
export type MekState = "active" | "retired" | "dead";
interface MekTable {
export interface MekTable {
user_id: number;
version: number;
state: MekState;
}
interface MekLogTable {
export interface MekLogTable {
id: Generated<number>;
user_id: number;
master_encryption_key_version: number;
@@ -17,7 +17,7 @@ interface MekLogTable {
action_by: number | null;
}
interface ClientMekTable {
export interface ClientMekTable {
user_id: number;
client_id: number;
version: number;

View File

@@ -1,6 +1,6 @@
import type { ColumnType, Generated } from "kysely";
interface SessionTable {
export interface SessionTable {
id: string;
user_id: number;
client_id: number | null;
@@ -10,7 +10,7 @@ interface SessionTable {
last_used_by_agent: string | null;
}
interface SessionUpgradeChallengeTable {
export interface SessionUpgradeChallengeTable {
id: Generated<number>;
session_id: string;
client_id: number;

View File

@@ -1,7 +1,7 @@
import type { Generated } from "kysely";
import type { Ciphertext } from "./utils";
interface UploadSessionTable {
export interface UploadSessionTable {
id: string;
type: "file" | "thumbnail" | "migration";
user_id: number;

View File

@@ -1,6 +1,6 @@
import type { Generated } from "kysely";
interface UserTable {
export interface UserTable {
id: Generated<number>;
email: string;
nickname: string;