Skip to content

Commit 45f0352

Browse files
committed
Move adapters under src/adapters and remove service auto-fixes
1 parent 1076f1d commit 45f0352

6 files changed

Lines changed: 7 additions & 71 deletions

File tree

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { Adapter } from 'lowdb'
22

3-
import { randomId } from './random-id.ts'
4-
import type { Data, Item } from './service.ts'
3+
import { randomId } from '../random-id.ts'
4+
import type { Data, Item } from '../service.ts'
55

66
export const DEFAULT_SCHEMA_PATH = './node_modules/json-server/schema.json'
77
export type RawData = Record<string, Item[] | Item | string | undefined> & {

src/bin.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import { DataFile, JSONFile } from "lowdb/node";
1212
import type { PackageJson } from "type-fest";
1313

1414
import { fileURLToPath } from "node:url";
15+
import { NormalizedAdapter } from "./adapters/normalized-adapter.ts";
16+
import type { RawData } from "./adapters/normalized-adapter.ts";
17+
import { Observer } from "./adapters/observer.ts";
1518
import { createApp } from "./app.ts";
16-
import { NormalizedAdapter } from "./normalized-adapter.ts";
17-
import type { RawData } from "./normalized-adapter.ts";
18-
import { Observer } from "./observer.ts";
1919
import type { Data } from "./service.ts";
2020

2121
function help() {

src/normalized-adapter.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import test from 'node:test'
33

44
import type { Adapter } from 'lowdb'
55

6-
import { DEFAULT_SCHEMA_PATH, NormalizedAdapter } from './normalized-adapter.ts'
7-
import type { RawData } from './normalized-adapter.ts'
6+
import { DEFAULT_SCHEMA_PATH, NormalizedAdapter } from './adapters/normalized-adapter.ts'
7+
import type { RawData } from './adapters/normalized-adapter.ts'
88
import type { Data } from './service.ts'
99

1010
class StubAdapter implements Adapter<RawData> {

src/service.test.ts

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -56,42 +56,6 @@ beforeEach(() => {
5656
})
5757
})
5858

59-
await test('constructor', () => {
60-
const defaultData = { posts: [{ id: '1' }, {}], object: {} } satisfies Data
61-
const db = new Low<Data>(adapter, defaultData)
62-
new Service(db)
63-
if (Array.isArray(db.data['posts'])) {
64-
const id0 = db.data['posts'][0]['id']
65-
const id1 = db.data['posts'][1]['id']
66-
assert.ok(
67-
typeof id0 === 'string' && id0 === '1',
68-
`id should not change if already set but was: ${id0}`,
69-
)
70-
assert.ok(
71-
typeof id1 === 'string' && id1.length > 0,
72-
`id should be a non empty string but was: ${id1}`,
73-
)
74-
}
75-
assert.equal(
76-
(db.data as Record<string, unknown>)['$schema'],
77-
'./node_modules/json-server/schema.json',
78-
'$schema should be set when missing',
79-
)
80-
})
81-
82-
await test('constructor: $schema not overwritten if present', () => {
83-
const defaultData = { posts: [] } satisfies Data
84-
const db = new Low<Data>(adapter, defaultData)
85-
const data = db.data as Record<string, unknown>
86-
data['$schema'] = './custom/schema.json'
87-
new Service(db)
88-
assert.equal(
89-
data['$schema'],
90-
'./custom/schema.json',
91-
'$schema should not be overwritten when already set',
92-
)
93-
})
94-
9559
await test('findById', () => {
9660
const cases: [[string, string, { _embed?: string[] | string }], unknown][] = [
9761
[[POSTS, '1', {}], db.data?.[POSTS]?.[0]],

src/service.ts

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import sortOn from 'sort-on'
44
import type { JsonObject } from 'type-fest'
55

66
import { matchesWhere } from './matches-where.ts'
7-
import { DEFAULT_SCHEMA_PATH } from './normalized-adapter.ts'
87
import { paginate, type PaginationResult } from './paginate.ts'
98
import { randomId } from './random-id.ts'
109
export type Item = Record<string, unknown>
@@ -21,31 +20,6 @@ function ensureArray(arg: string | string[] = []): string[] {
2120
return Array.isArray(arg) ? arg : [arg]
2221
}
2322

24-
function fixItemsIds(items: Item[]) {
25-
items.forEach((item) => {
26-
if (typeof item['id'] === 'number') {
27-
item['id'] = item['id'].toString()
28-
}
29-
if (item['id'] === undefined) {
30-
item['id'] = randomId()
31-
}
32-
})
33-
}
34-
35-
function fixAllItemsIds(data: Data) {
36-
Object.values(data).forEach((value) => {
37-
if (Array.isArray(value)) {
38-
fixItemsIds(value)
39-
}
40-
})
41-
}
42-
43-
function fixSchema(data: Data) {
44-
if (data['$schema'] === undefined) {
45-
;(data as Record<string, unknown>)['$schema'] = DEFAULT_SCHEMA_PATH
46-
}
47-
}
48-
4923
function embed(db: Low<Data>, name: string, item: Item, related: string): Item {
5024
if (inflection.singularize(related) === related) {
5125
const relatedData = db.data[inflection.pluralize(related)] as Item[]
@@ -108,8 +82,6 @@ export class Service {
10882
#db: Low<Data>
10983

11084
constructor(db: Low<Data>) {
111-
fixSchema(db.data)
112-
fixAllItemsIds(db.data)
11385
this.#db = db
11486
}
11587

0 commit comments

Comments
 (0)