added backend-mgmt for dataset/dataset_entry and utterances, this includes upload and also displaying of the dataset on the admin pages

This commit is contained in:
averel10
2026-03-05 11:31:06 +01:00
parent 28c45bc133
commit c08dc46305
33 changed files with 5609 additions and 37 deletions

23
src/lib/model/dataset.ts Normal file
View File

@@ -0,0 +1,23 @@
import { sqliteTable, text, integer, real } from 'drizzle-orm/sqlite-core';
import { relations } from 'drizzle-orm';
import { dataset_entry } from './dataset_entry';
// Define the dataset table schema
export const dataset = sqliteTable('dataset', {
id: integer('id').primaryKey({ autoIncrement: true }),
name: text('name').notNull(),
createdAt: integer('created_at', { mode: 'timestamp' })
.notNull()
.default(new Date()),
updatedAt: integer('updated_at', { mode: 'timestamp' })
.notNull()
.default(new Date())
});
export const datasetRelations = relations(dataset, ({ many }) => ({
entries: many(dataset_entry)
}));
// Create a type for dataset records based on the schema
export type Dataset = typeof dataset.$inferSelect;
export type NewDataset = typeof dataset.$inferInsert;

View File

@@ -0,0 +1,40 @@
import { sqliteTable, text, integer, real } from 'drizzle-orm/sqlite-core';
import { relations } from 'drizzle-orm';
import { dataset } from './dataset';
import { dataset_utterance } from './utterance';
// Define the dataset table schema
export const dataset_entry = sqliteTable('dataset_entry', {
id: integer('id').primaryKey({ autoIncrement: true }),
externalId: text('external_id').notNull(),
speakerId: text('speaker_id').notNull(),
modelName: text('model_name').notNull(),
datasetId: integer('dataset_id')
.notNull()
.references(() => dataset.id),
utteranceId: text('utterance_id').references(() => dataset_utterance.id),
fileName: text('file_name').notNull(),
dialect: text('dialect').notNull(),
iteration: integer('iteration').notNull(),
createdAt: integer('created_at', { mode: 'timestamp' })
.notNull()
.default(new Date()),
updatedAt: integer('updated_at', { mode: 'timestamp' })
.notNull()
.default(new Date())
});
export const dataset_entryRelations = relations(dataset_entry, ({ one }) => ({
dataset: one(dataset, {
fields: [dataset_entry.datasetId],
references: [dataset.id]
}),
utterance: one(dataset_utterance, {
fields: [dataset_entry.utteranceId],
references: [dataset_utterance.id]
})
}));
// Create a type for dataset records based on the schema
export type DatasetEntry = typeof dataset_entry.$inferSelect;
export type NewDatasetEntry = typeof dataset_entry.$inferInsert;

3
src/lib/model/index.ts Normal file
View File

@@ -0,0 +1,3 @@
export * from "./dataset";
export * from "./dataset_entry";
export * from "./utterance";

View File

@@ -0,0 +1,29 @@
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
import { relations } from 'drizzle-orm';
import { dataset } from './dataset';
// Define the dataset_utterance table schema
export const dataset_utterance = sqliteTable('dataset_utterance', {
id: text('id').primaryKey(),
datasetId: integer('dataset_id')
.notNull()
.references(() => dataset.id),
text: text('text').notNull(),
createdAt: integer('created_at', { mode: 'timestamp' })
.notNull()
.default(new Date()),
updatedAt: integer('updated_at', { mode: 'timestamp' })
.notNull()
.default(new Date()),
});
export const dataset_utteranceRelations = relations(dataset_utterance, ({ one }) => ({
dataset: one(dataset, {
fields: [dataset_utterance.datasetId],
references: [dataset.id],
}),
}));
// Create types for dataset_utterance records based on the schema
export type DatasetUtterance = typeof dataset_utterance.$inferSelect;
export type NewDatasetUtterance = typeof dataset_utterance.$inferInsert;