import * as storage from './storage.js' import * as math from './math.js' import { SESSION, MESSAGE, EVENT } from './enums'; let first_point_x = null; let first_point_y = null; function parse_and_insert_stroke(desk_id, line) { const stroke_id = math.fast_random32(); const words = line.split(' '); const width = parseInt(words.shift()); const points = new Float32Array(words.map(i => parseFloat(i))); if (first_point_x === null) { first_point_x = points[0]; first_point_y = points[1]; } for (let i = 0; i < points.length; i += 2) { points[i + 0] -= first_point_x; points[i + 1] -= first_point_y; } const stroke_res = storage.queries.insert_stroke.get({ '$width': width, '$color': 0, '$points': points }); storage.queries.insert_event.run({ '$type': EVENT.STROKE, '$desk_id': desk_id, '$session_id': 0, '$stroke_id': stroke_res.id, '$image_id': 0, '$x': 0, '$y': 0, }); } async function import_milton_file_to_sqlite(fullpath) { storage.startup(); const desk_id = 9881; // math.fast_random32(); console.log(`Importing ${fullpath} into desk ${desk_id}`); storage.queries.insert_desk.run({ '$id': desk_id, '$title': `Desk ${desk_id}` }); const input_file = Bun.file(fullpath); const input_text = await input_file.text(); const input_lines = input_text.split('\n'); for (let i = 0; i < input_lines.length; ++i) { console.log(`Importing ${i}/${input_lines.length}`); parse_and_insert_stroke(desk_id, input_lines[i]); } console.log(`Finished importing desk ${desk_id}`); } import_milton_file_to_sqlite("/code/desk2/server/points.txt");