Upgrade database schema to version 2 and remove unused meta_* columns
- Increment `SCHEMA_VERSION` to 2 in `schema.ts`. - Remove all `meta_*` columns from database tables. - Add migration logic to handle schema upgrades and clean up unused columns. - Modify database models and repository methods to exclude `meta_*` fields for stricter typings and improved structure. - Refactor and optimize query statements across repositories to align with new schema changes.
This commit is contained in:
@@ -4,35 +4,28 @@ import System from "../System.js";
|
||||
export interface LocationQueryResult extends Record<string, SQLiteValue> {
|
||||
loc_id: string;
|
||||
loc_name: string;
|
||||
loc_meta: string;
|
||||
element_id: string;
|
||||
element_name: string;
|
||||
element_description: string;
|
||||
element_meta: string;
|
||||
sub_element_id: string;
|
||||
sub_elem_name: string;
|
||||
sub_elem_description: string;
|
||||
sub_elem_meta: string;
|
||||
}
|
||||
|
||||
export interface LocationElementQueryResult extends Record<string, SQLiteValue> {
|
||||
sub_element_id: string;
|
||||
sub_elem_name: string;
|
||||
sub_elem_description: string;
|
||||
sub_elem_meta: string;
|
||||
element_id: string;
|
||||
element_name: string;
|
||||
element_description: string;
|
||||
element_meta: string;
|
||||
}
|
||||
|
||||
export interface LocationByTagResult extends Record<string, SQLiteValue> {
|
||||
element_name: string;
|
||||
element_description: string;
|
||||
element_meta: string;
|
||||
sub_elem_name: string;
|
||||
sub_elem_description: string;
|
||||
sub_elem_meta: string;
|
||||
}
|
||||
|
||||
export default class LocationRepo {
|
||||
@@ -40,7 +33,7 @@ export default class LocationRepo {
|
||||
let result: LocationQueryResult[];
|
||||
try {
|
||||
const db: Database = System.getDb();
|
||||
const query = 'SELECT loc_id,loc_name, loc_meta, element.element_id AS element_id, element.element_name, element.element_description, element.element_meta, sub_elem.sub_element_id AS sub_element_id,sub_elem.sub_elem_name,sub_elem.sub_elem_description,sub_elem.sub_elem_meta FROM `book_location` AS location LEFT JOIN location_element AS element ON location.loc_id=element.location LEFT JOIN location_sub_element AS sub_elem ON element.element_id=sub_elem.element_id WHERE location.user_id=? AND location.book_id=?';
|
||||
const query = 'SELECT loc_id, loc_name, element.element_id AS element_id, element.element_name, element.element_description, sub_elem.sub_element_id AS sub_element_id, sub_elem.sub_elem_name, sub_elem.sub_elem_description FROM book_location AS location LEFT JOIN location_element AS element ON location.loc_id=element.location LEFT JOIN location_sub_element AS sub_elem ON element.element_id=sub_elem.element_id WHERE location.user_id=? AND location.book_id=?';
|
||||
result = db.all(query, [userId, bookId]) as LocationQueryResult[];
|
||||
} catch (e: unknown) {
|
||||
if (e instanceof Error) {
|
||||
@@ -217,7 +210,7 @@ export default class LocationRepo {
|
||||
let result: LocationElementQueryResult[];
|
||||
try {
|
||||
const db: Database = System.getDb();
|
||||
const query = 'SELECT se.sub_element_id AS sub_element_id, se.sub_elem_name, se.sub_elem_description, se.sub_elem_meta, el.element_id AS element_id, el.element_name, el.element_description, el.element_meta FROM location_sub_element AS se RIGHT JOIN location_element AS el ON se.element_id = el.element_id LEFT JOIN book_location AS lo ON el.location = lo.loc_id WHERE lo.book_id = ? AND lo.user_id = ?';
|
||||
const query = 'SELECT se.sub_element_id AS sub_element_id, se.sub_elem_name, se.sub_elem_description, el.element_id AS element_id, el.element_name, el.element_description FROM location_sub_element AS se RIGHT JOIN location_element AS el ON se.element_id = el.element_id LEFT JOIN book_location AS lo ON el.location = lo.loc_id WHERE lo.book_id = ? AND lo.user_id = ?';
|
||||
result = db.all(query, [bookId, userId]) as LocationElementQueryResult[];
|
||||
} catch (e: unknown) {
|
||||
if (e instanceof Error) {
|
||||
@@ -242,10 +235,8 @@ export default class LocationRepo {
|
||||
const query: string = `
|
||||
SELECT el.element_name,
|
||||
el.element_description,
|
||||
el.element_meta,
|
||||
se.sub_elem_name,
|
||||
se.sub_elem_description,
|
||||
se.sub_elem_meta
|
||||
se.sub_elem_description
|
||||
FROM location_element AS el
|
||||
LEFT JOIN location_sub_element AS se ON el.element_id = se.element_id
|
||||
WHERE el.user_id = ?
|
||||
|
||||
Reference in New Issue
Block a user