diff --git a/pos-frontend/__test__/db.test.jsx b/pos-frontend/__test__/db.test.jsx index 7e8c994..fb6348a 100644 --- a/pos-frontend/__test__/db.test.jsx +++ b/pos-frontend/__test__/db.test.jsx @@ -1,9 +1,22 @@ import '@testing-library/jest-dom' import pl from 'nodejs-polars' -import { test_x } from '../app/database' +import { test_x, create_csv_database, add_row, print_head, delete_row_by_key, save_db } from '../app/database' describe('DATABASE', () => { it('DATA', () => { test_x() }) + + it('create csv', () => { + let res = create_csv_database('csv_db/x.csv') + print_head(res) + + add_row(res, { "key": ["x"], "value": ["y"] }) + print_head(res) + + save_db(res) + + delete_row_by_key(res, "x") + print_head(res) + }) }) diff --git a/pos-frontend/__test__/fire.test.jsx b/pos-frontend/__test__/fire.test.jsx index 5605b29..d19c048 100644 --- a/pos-frontend/__test__/fire.test.jsx +++ b/pos-frontend/__test__/fire.test.jsx @@ -3,4 +3,12 @@ describe('Database 2', () => { // so do firebase // and can optionally have a local index if needed }) + + it('Hi', () => { + let x = "hi" == "hi" + let y = "hi2" == "hi" + + console.log(x) + console.log(y) + }) }) diff --git a/pos-frontend/app/database.ts b/pos-frontend/app/database.ts index 014f54b..da3b5b7 100644 --- a/pos-frontend/app/database.ts +++ b/pos-frontend/app/database.ts @@ -1,5 +1,5 @@ import pl, { DataFrame } from 'nodejs-polars' -import fs from 'fs' +import fs, { writeFile } from 'fs' export function test_x(params: any) { const fooSeries = pl.Series("foo", [1, 2, 3]) @@ -38,20 +38,12 @@ class CSVDatabase { } read(filter: Record) { - if (this.df) { - return this.df.filter(filter) - } - return null + return this.df ? this.df.filter(filter) : null } update(filter: Record, values: Record) { if (this.df) { - // this.df = this.df.withColumn( - // Object.keys(values)[0], - // this.df - // .filter(filter) - // .withColumn(Object.keys(values)[0], pl.lit(values[Object.keys(values)[0]])) - // ) + // update it this.saveCSV() } } @@ -64,3 +56,41 @@ class CSVDatabase { } } } + +// A CSV can refer to other CSV's via pointers, a type of metadata + +interface CSVDatabase2 { + df: DataFrame + filepath: string +} + +export function create_csv_database(filepath: string): CSVDatabase2 { + // let df = DataFrame([], { columns: ["key", "value"] }) + let df = DataFrame({ "key": ['header'], "value": ['next'] }) + + // writeFile(filepath, 'key,value\nheader,next', () => { }) + // let df = pl.readCSV(filepath) + df.writeCSV(filepath) + + return { df, filepath } +} + +export function save_db(db: CSVDatabase2) { + db.df.writeCSV(db.filepath) +} + +export function add_row(db: CSVDatabase2, row: Record) { + db.df = db.df.vstack(DataFrame(row)) +} + +export function print_head(db: CSVDatabase2) { + console.log(db.df.head()) +} + +// can filter everything that is not the row, and do to db + +export function delete_row_by_key({df, filepath}: CSVDatabase2, key: string) { + // db.df.drop(pl.col("key").eq(key)) + // df = df.select((pl.col("key") != key).alias("nrs > 1")) + // db.df = db.df.filter(pl.col("key").neq(key)) +} diff --git a/pos-frontend/csv_db/x.csv b/pos-frontend/csv_db/x.csv new file mode 100644 index 0000000..ca11190 --- /dev/null +++ b/pos-frontend/csv_db/x.csv @@ -0,0 +1,3 @@ +key,value +header,next +x,y