Enable new schema for file types and machines

Removed the deprecated `firstName` and `lastName` fields and introduced `email` and `uploader` fields. Added `FilesTypesTable`, `MachinesTable`, and `FilesTypeForMachine` for managing file types and machine associations. Updated the `fileType` field to reference `FilesTypesTable`.
This commit is contained in:
Mathis H (Avnyr) 2024-09-02 14:58:04 +02:00
parent b4c4151550
commit be121ef7ca
No known key found for this signature in database
GPG Key ID: FF69BF8BF95CDD58

View File

@ -6,7 +6,7 @@ export const UsersTable = pgTable("users", {
// Unique identifier on a technical aspect. // Unique identifier on a technical aspect.
uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(), uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(),
firstName: p /*firstName: p
.varchar("first_name", { .varchar("first_name", {
length: 24, length: 24,
}) })
@ -16,6 +16,12 @@ export const UsersTable = pgTable("users", {
.varchar("last_name", { .varchar("last_name", {
length: 24, length: 24,
}) })
.notNull(),**/
email: p
.varchar("email", {
length: 64,
})
.notNull(), .notNull(),
//hash (Argonid2 hash) //hash (Argonid2 hash)
@ -55,14 +61,20 @@ export const FilesTable = pgTable("files", {
}) })
.notNull(), .notNull(),
uploader: p
.varchar("uploader", {
length: 64,
})
.default("anonyme")
.notNull(),
fileSize: p.integer("file_size").notNull(), fileSize: p.integer("file_size").notNull(),
//TODO Replace by file type reference //TODO Replace by file type reference
fileType: p fileType: p
.varchar("file_type", { .uuid("file_type")
length: 50, .notNull()
}) .references(() => FilesTypesTable.id),
.notNull(),
isRestricted: p.boolean("is_restricted").default(false).notNull(), isRestricted: p.boolean("is_restricted").default(false).notNull(),
@ -80,6 +92,50 @@ export const FilesTable = pgTable("files", {
.notNull(), .notNull(),
}); });
//TODO Many/Many Files -> Categories
//TODO Files types //TODO Files types
export const FilesTypesTable = pgTable("f_types", {
//uuid
id: p.uuid("id").unique().primaryKey().defaultRandom().notNull(),
typeName: p
.varchar("type_name", {
length: 64,
})
.notNull(),
mime: p
.varchar("mime_type", {
length: 64,
})
.unique()
.notNull(),
});
export const MachinesTable = pgTable("machines", {
id: p.uuid("id").unique().primaryKey().defaultRandom().notNull(),
machineName: p
.varchar("machine_name", {
length: 64,
})
.notNull(),
machineType: p
.varchar("machine_type", {
length: 64,
})
.notNull(),
//supported files format
});
export const FilesTypeForMachine = pgTable("f_type_for_machines", {
machineId: p
.uuid("machine_id")
.notNull()
.references(() => MachinesTable.id),
fileTypeId: p
.uuid("file_type_id")
.notNull()
.references(() => FilesTypesTable.id),
});