create database
This commit is contained in:
parent
a0596cef25
commit
f77936828c
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
node_modules/
|
||||
pnpm-lock.yaml
|
||||
games.db
|
||||
|
11
db/migrations/20240130203355_user-table.sql
Normal file
11
db/migrations/20240130203355_user-table.sql
Normal file
@ -0,0 +1,11 @@
|
||||
-- migrate:up
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bgg_user (
|
||||
username text primary key
|
||||
);
|
||||
|
||||
|
||||
-- migrate:down
|
||||
|
||||
DROP TABLE bgg_user;
|
||||
|
16
db/migrations/20240130203603_game-table.sql
Normal file
16
db/migrations/20240130203603_game-table.sql
Normal file
@ -0,0 +1,16 @@
|
||||
-- migrate:up
|
||||
|
||||
CREATE TABLE IF NOT EXISTS game (
|
||||
id integer primary key,
|
||||
username text,
|
||||
thumbnail text,
|
||||
bgg_id text,
|
||||
name text,
|
||||
notes text,
|
||||
FOREIGN KEY(username) REFERENCES bgg_user(username)
|
||||
);
|
||||
|
||||
-- migrate:down
|
||||
|
||||
drop table game;
|
||||
|
8
db/migrations/20240130205124_add-price.sql
Normal file
8
db/migrations/20240130205124_add-price.sql
Normal file
@ -0,0 +1,8 @@
|
||||
-- migrate:up
|
||||
|
||||
ALTER TABLE game ADD COLUMN price integer;
|
||||
|
||||
-- migrate:down
|
||||
|
||||
ALTER TABLE game DROP COLUMN price integer;
|
||||
|
18
db/schema.sql
Normal file
18
db/schema.sql
Normal file
@ -0,0 +1,18 @@
|
||||
CREATE TABLE IF NOT EXISTS "schema_migrations" (version varchar(255) primary key);
|
||||
CREATE TABLE bgg_user (
|
||||
username text primary key
|
||||
);
|
||||
CREATE TABLE game (
|
||||
id integer primary key,
|
||||
username text,
|
||||
thumbnail text,
|
||||
bgg_id text,
|
||||
name text,
|
||||
notes text, price integer,
|
||||
FOREIGN KEY(username) REFERENCES bgg_user(username)
|
||||
);
|
||||
-- Dbmate schema migrations
|
||||
INSERT INTO "schema_migrations" (version) VALUES
|
||||
('20240130203355'),
|
||||
('20240130203603'),
|
||||
('20240130205124');
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"type":"module",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"better-sqlite3": "^9.3.0",
|
||||
"cheerio": "1.0.0-rc.12",
|
||||
"node-fetch": "^3.3.2",
|
||||
"vitest": "^1.2.2"
|
||||
|
@ -1,5 +1,9 @@
|
||||
import { load } from 'cheerio';
|
||||
import fetch from 'node-fetch';
|
||||
import DB from 'better-sqlite3';
|
||||
|
||||
const db = DB('games.db');
|
||||
db.pragma('journal_mode = WAL');
|
||||
|
||||
export function extract_user_forsale(page) {
|
||||
|
||||
@ -9,8 +13,8 @@ export function extract_user_forsale(page) {
|
||||
|
||||
const data = $('item').map( function (i,item) {
|
||||
const data = {};
|
||||
data.game_id = $(this).attr('objectid');
|
||||
data.game_name = $(this).find('name').text();
|
||||
data.bgg_id = $(this).attr('objectid');
|
||||
data.name = $(this).find('name').text();
|
||||
data.thumbnail = $(this).find('thumbnail').text();
|
||||
data.notes = $(this).find('conditiontext').text();
|
||||
const find_price = data.notes.match(/\$(\d+)/);
|
||||
@ -41,4 +45,21 @@ async function fetch_user_forsale(username,n=1) {
|
||||
throw new Error("couldn't get the collection");
|
||||
}
|
||||
|
||||
console.log( await fetch_user_forsale('yenzie') );
|
||||
async function update_user_games(username) {
|
||||
const games = await fetch_user_forsale(username);
|
||||
|
||||
const insert = db.prepare( 'INSERT into game (username, bgg_id, name, thumbnail, notes) VALUES(@username,@bgg_id,@name,@thumbnail,@notes)' );
|
||||
|
||||
db.prepare('DELETE FROM game where username = @username').run({username});
|
||||
|
||||
for ( let game of games ) {
|
||||
insert.run({
|
||||
username,
|
||||
...game
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
console.log( await update_user_games('yenzie') );
|
||||
|
Loading…
Reference in New Issue
Block a user