Store array colums as CSV text

This is in preparation for a transition to SQLite, which sadly does
not support array-valued columns (or indeed have much of a type
system in general).
This commit is contained in:
Tau
2019-10-10 19:59:13 -04:00
parent 3e6b4f4798
commit 30d42bd832
5 changed files with 30 additions and 11 deletions

View File

@@ -10,7 +10,7 @@ function _extractRow(row: any): Car {
selector: row.selector,
field_00: row.field_00,
field_02: row.field_02,
field_04: row.field_04,
field_04: row.field_04.split(",").map((x: string) => parseInt(x, 10)),
field_46: row.field_46,
field_48: row.field_48,
field_4a: row.field_4a,
@@ -70,7 +70,7 @@ export class SqlCarRepository implements CarRepository {
selector: car.selector,
field_00: car.field_00,
field_02: car.field_02,
field_04: car.field_04,
field_04: car.field_04.join(","),
field_46: car.field_46,
field_48: car.field_48,
field_4a: car.field_4a,

View File

@@ -31,7 +31,7 @@ export class SqlTimeAttackRepository implements TimeAttackRepository {
timestamp: new Date(row.timestamp),
flags: row.flags,
totalTime: row.total_time,
sectionTimes: row.section_times,
sectionTimes: row.section_times.split(","),
grade: row.grade,
carSelector: row.car_selector,
},
@@ -51,7 +51,7 @@ export class SqlTimeAttackRepository implements TimeAttackRepository {
timestamp: new Date(row.timestamp),
flags: row.flags,
totalTime: row.total_time,
sectionTimes: row.section_times,
sectionTimes: row.section_times.split(",").map(parseFloat),
grade: row.grade,
carSelector: row.car_selector,
}));
@@ -63,7 +63,7 @@ export class SqlTimeAttackRepository implements TimeAttackRepository {
profile_id: profileId,
route_no: score.routeNo,
total_time: score.totalTime,
section_times: score.sectionTimes,
section_times: score.sectionTimes.join(","),
flags: score.flags,
grade: score.grade,
car_selector: score.carSelector,
@@ -86,7 +86,7 @@ export class SqlTimeAttackRepository implements TimeAttackRepository {
profile_id: profileId,
route_no: score.routeNo,
total_time: score.totalTime,
section_times: score.sectionTimes,
section_times: score.sectionTimes.join(","),
flags: score.flags,
grade: score.grade,
car_selector: score.carSelector,
@@ -98,7 +98,7 @@ export class SqlTimeAttackRepository implements TimeAttackRepository {
const updateSql = sql
.update("idz_ta_best", {
total_time: score.totalTime,
section_times: score.sectionTimes,
section_times: score.sectionTimes.join(","),
flags: score.flags,
grade: score.grade,
car_selector: score.carSelector,