Skip to content

Commit

Permalink
Changed formatting config.
Browse files Browse the repository at this point in the history
  • Loading branch information
a-h committed Aug 6, 2020
1 parent e9c4f2e commit 224e0e2
Show file tree
Hide file tree
Showing 10 changed files with 100 additions and 313 deletions.
10 changes: 10 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": false,
"trailingComma": "all",
"bracketSpacing": true,
"arrowParens": "always"
}
5 changes: 1 addition & 4 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
module.exports = {
presets: [
["@babel/preset-env", { targets: { node: "current" } }],
"@babel/preset-typescript",
],
presets: [["@babel/preset-env", { targets: { node: "current" } }], "@babel/preset-typescript"],
};
24 changes: 9 additions & 15 deletions examples/ledger/ledger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,15 @@ const demonstrateLedger = async () => {
(input: HeadUpdaterInput<AccountBalance, Transaction>): AccountBalance => {
input.head.balance += input.current.amount;
return input.head;
}
},
);
rules.set(
AccountUpdateRecordName,
(
input: HeadUpdaterInput<AccountBalance, AccountUpdate>
): AccountBalance => {
(input: HeadUpdaterInput<AccountBalance, AccountUpdate>): AccountBalance => {
input.head.ownerFirst = input.current.ownerFirst;
input.head.ownerLast = input.current.ownerLast;
return input.head;
}
},
);

// New accounts start with a balance of zero.
Expand All @@ -92,11 +90,7 @@ const demonstrateLedger = async () => {
const processor = new Processor<AccountBalance>(rules, initialAccount);

// Can now create a ledger "Facet" in our DynamoDB table.
const ledger = new Facet<AccountBalance>(
AccountBalanceRecordName,
db,
processor
);
const ledger = new Facet<AccountBalance>(AccountBalanceRecordName, db, processor);

// Let's create a new account.
const accountId = Math.round(Math.random() * 1000000).toString();
Expand All @@ -110,7 +104,7 @@ const demonstrateLedger = async () => {
new Data<AccountUpdate>(AccountUpdateRecordName, {
ownerFirst: "John",
ownerLast: "Brown",
} as AccountUpdate)
} as AccountUpdate),
);

// Now, let's add a couple of transactions in a single operation.
Expand All @@ -123,7 +117,7 @@ const demonstrateLedger = async () => {
new Data<Transaction>(TransactionRecordName, {
desc: "Transaction B",
amount: -300,
})
}),
);

// Another separate transaction.
Expand All @@ -132,7 +126,7 @@ const demonstrateLedger = async () => {
new Data<Transaction>(TransactionRecordName, {
desc: "Transaction C",
amount: 50,
})
}),
);

// If we've just read the HEAD, we can try appending without doing
Expand All @@ -145,7 +139,7 @@ const demonstrateLedger = async () => {
new Data<Transaction>(TransactionRecordName, {
desc: "Transaction D",
amount: 25,
})
}),
);

// Get the final balance.
Expand All @@ -164,7 +158,7 @@ const demonstrateLedger = async () => {
new Data<Transaction>(TransactionRecordName, {
desc: "Transaction E",
amount: 25,
})
}),
);
console.log(`Final balance: ${JSON.stringify(finalBalance.item)}`);
};
Expand Down
152 changes: 22 additions & 130 deletions src/db/index.integration.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
import { DocumentClient } from "aws-sdk/clients/dynamodb";
import { DynamoDB } from "aws-sdk";
import {
EventDB,
newHeadRecord,
newDataRecord,
DataRecord,
newEventRecord,
} from ".";
import { EventDB, newHeadRecord, newDataRecord, DataRecord, newEventRecord } from ".";

describe("EventDB", () => {
describe("getHead", () => {
Expand All @@ -15,13 +9,7 @@ describe("EventDB", () => {
try {
const db = new EventDB(testDB.client, testDB.name, "facetName");
const head = { key: "value" };
const headRecord = newHeadRecord<any>(
"facetName",
"idValue",
1,
head,
new Date()
);
const headRecord = newHeadRecord<any>("facetName", "idValue", 1, head, new Date());
await db.putHead(headRecord, 0);

const actual = await db.getHead("idValue");
Expand All @@ -37,22 +25,10 @@ describe("EventDB", () => {
try {
const db = new EventDB(testDB.client, testDB.name, "facetName");
const head1 = { key: "value1" };
const headRecord1 = newHeadRecord<any>(
"facetName",
"idValue",
1,
head1,
new Date()
);
const headRecord1 = newHeadRecord<any>("facetName", "idValue", 1, head1, new Date());
await db.putHead(headRecord1, 0);
const head2 = { key: "value2" };
const headRecord2 = newHeadRecord<any>(
"facetName",
"idValue",
2,
head2,
new Date()
);
const headRecord2 = newHeadRecord<any>("facetName", "idValue", 2, head2, new Date());
await db.putHead(headRecord2, 1);

const actual = await db.getHead("idValue");
Expand All @@ -66,30 +42,10 @@ describe("EventDB", () => {
try {
const db = new EventDB(testDB.client, testDB.name, "facetName");
const head = { key: "value1" };
const headRecord = newHeadRecord<any>(
"facetName",
"idValue",
3,
head,
new Date()
);
const headRecord = newHeadRecord<any>("facetName", "idValue", 3, head, new Date());
const dataRecords = [
newDataRecord(
"facetName",
"idValue",
1,
"data",
{ record: "data1" },
new Date()
),
newDataRecord(
"facetName",
"idValue",
2,
"data",
{ record: "data2" },
new Date()
),
newDataRecord("facetName", "idValue", 1, "data", { record: "data1" }, new Date()),
newDataRecord("facetName", "idValue", 2, "data", { record: "data2" }, new Date()),
];
await db.putHead(headRecord, 0, dataRecords);

Expand All @@ -104,50 +60,14 @@ describe("EventDB", () => {
try {
const db = new EventDB(testDB.client, testDB.name, "facetName");
const head = { key: "value1" };
const headRecord = newHeadRecord<any>(
"facetName",
"idValue",
5,
head,
new Date()
);
const headRecord = newHeadRecord<any>("facetName", "idValue", 5, head, new Date());
const dataRecords = [
newDataRecord(
"facetName",
"idValue",
1,
"data",
{ record: "data1" },
new Date()
),
newDataRecord(
"facetName",
"idValue",
2,
"data",
{ record: "data2" },
new Date()
),
newDataRecord("facetName", "idValue", 1, "data", { record: "data1" }, new Date()),
newDataRecord("facetName", "idValue", 2, "data", { record: "data2" }, new Date()),
];
const eventRecords = [
newEventRecord(
"facetName",
"idValue",
3,
0,
"data",
{ record: "data1" },
new Date()
),
newEventRecord(
"facetName",
"idValue",
3,
1,
"event",
{ event: "test1" },
new Date()
),
newEventRecord("facetName", "idValue", 3, 0, "data", { record: "data1" }, new Date()),
newEventRecord("facetName", "idValue", 3, 1, "event", { event: "test1" }, new Date()),
];
await db.putHead(headRecord, 0, dataRecords, eventRecords);

Expand All @@ -160,24 +80,18 @@ describe("EventDB", () => {
it("validates head records are the right type", async () => {
const db = new EventDB({} as DocumentClient, "fakeName", "facetName");
try {
await db.putHead(
newEventRecord("not_important", "", 0, 0, "test", {}, new Date()),
0
);
await db.putHead(newEventRecord("not_important", "", 0, 0, "test", {}, new Date()), 0);
} catch (e) {
expect(e.message).toBe("putHead: invalid head record");
}
});
it("validates head records are the right facet", async () => {
const db = new EventDB({} as DocumentClient, "fakeName", "facetName");
try {
await db.putHead(
newHeadRecord("incorrect_facet", "", 0, {}, new Date()),
0
);
await db.putHead(newHeadRecord("incorrect_facet", "", 0, {}, new Date()), 0);
} catch (e) {
expect(e.message).toBe(
'putHead: head record has mismatched facet. Expected: "facetName", got: "incorrect_facet"'
'putHead: head record has mismatched facet. Expected: "facetName", got: "incorrect_facet"',
);
}
});
Expand All @@ -195,14 +109,7 @@ describe("EventDB", () => {
const db = new EventDB({} as DocumentClient, "fakeName", "facetName");
try {
await db.putHead(newHeadRecord("facetName", "", 0, {}, new Date()), 0, [
newDataRecord(
"incorrect_facet",
"id",
0,
"facetEvent",
{},
new Date()
),
newDataRecord("incorrect_facet", "id", 0, "facetEvent", {}, new Date()),
]);
} catch (e) {
expect(e.message).toBe("putHead: invalid facet for data record");
Expand All @@ -215,7 +122,7 @@ describe("EventDB", () => {
newHeadRecord("facetName", "", 0, {}, new Date()),
0,
[newDataRecord("facetName", "id", 0, "facetEvent", {}, new Date())],
[newDataRecord("facetName", "id", 0, "facetEvent", {}, new Date())]
[newDataRecord("facetName", "id", 0, "facetEvent", {}, new Date())],
);
} catch (e) {
expect(e.message).toBe("putHead: invalid event record");
Expand All @@ -228,17 +135,7 @@ describe("EventDB", () => {
newHeadRecord("facetName", "", 0, {}, new Date()),
0,
[newDataRecord("facetName", "id", 0, "facetEvent", {}, new Date())],
[
newEventRecord(
"incorrect_facet",
"id",
0,
1,
"eventType",
{},
new Date()
),
]
[newEventRecord("incorrect_facet", "id", 0, 1, "eventType", {}, new Date())],
);
} catch (e) {
expect(e.message).toBe("putHead: invalid facet for event record");
Expand All @@ -247,17 +144,13 @@ describe("EventDB", () => {
it("validates that only 25 records can be posted at once", async () => {
const db = new EventDB({} as DocumentClient, "fakeName", "facetName");
const dataRecords = [...Array(26).keys()].map((i) =>
newDataRecord("facetName", "id", i, "typeName", {}, new Date())
newDataRecord("facetName", "id", i, "typeName", {}, new Date()),
);
try {
await db.putHead(
newHeadRecord("facetName", "", 0, {}, new Date()),
0,
dataRecords
);
await db.putHead(newHeadRecord("facetName", "", 0, {}, new Date()), 0, dataRecords);
} catch (e) {
expect(e.message).toBe(
"putHead: cannot exceed maximum DynamoDB transaction count of 25. The transaction attempted to write 27."
"putHead: cannot exceed maximum DynamoDB transaction count of 25. The transaction attempted to write 27.",
);
}
});
Expand Down Expand Up @@ -313,7 +206,6 @@ const createLocalTable = async (): Promise<DB> => {
region: "eu-west-1",
endpoint: "http://localhost:8000",
}),
delete: async () =>
await ddb.deleteTable({ TableName: tableName }).promise(),
delete: async () => await ddb.deleteTable({ TableName: tableName }).promise(),
};
};
Loading

0 comments on commit 224e0e2

Please sign in to comment.