Skip to content

Commit cdd17ca

Browse files
Docs: update derivation concepts and samples (estuary#473)
* initial doc updates: derivations spec and TS changes * doc npm dependencies & fix errors * tweak flowctl subcommand * update ts files after testing * Add `examples` prefix to examples * delete generated files * Updates per review * roll back lock file change for parity
1 parent 069b3a1 commit cdd17ca

20 files changed

+345
-289
lines changed

site/docs/concepts/bank/balances-test.flow.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ import:
22
- balances.flow.yaml
33

44
tests:
5-
acmeBank/tests/balances:
5+
examples/acmeBank/tests/balances:
66
- ingest:
7-
collection: acmeBank/transfers
7+
collection: examples/acmeBank/transfers
88
description: Initial deposits into user accounts.
99
documents:
1010
- { id: 1, sender: CREDIT, recipient: alice, amount: 100 }
1111
- { id: 2, sender: CREDIT, recipient: bob, amount: 100 }
1212
- { id: 3, sender: CREDIT, recipient: carol, amount: 100 }
1313

1414
- ingest:
15-
collection: acmeBank/transfers
15+
collection: examples/acmeBank/transfers
1616
description: Transfers between users, and a withdraw.
1717
documents:
1818
- { id: 4, sender: alice, recipient: bob, amount: 20 }
@@ -21,7 +21,7 @@ tests:
2121
- { id: 7, sender: bob, recipient: CREDIT, amount: 40 }
2222

2323
- verify:
24-
collection: acmeBank/balances
24+
collection: examples/acmeBank/balances
2525
description: Verify expected balances.
2626
documents:
2727
- { user: CREDIT, balance: -260 }

site/docs/concepts/bank/balances.flow.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

site/docs/concepts/bank/balances.flow.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import:
22
- transfers.flow.yaml
33

44
collections:
5-
acmeBank/balances:
5+
examples/acmeBank/balances:
66
schema:
77
type: object
88
required: [user]
@@ -15,9 +15,11 @@ collections:
1515
key: [/user]
1616

1717
derivation:
18+
typescript:
19+
module: balances.ts
1820
transform:
1921
fromTransfers:
2022
source:
21-
name: acmeBank/transfers
23+
name: examples/acmeBank/transfers
2224
publish:
2325
lambda: typescript
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { IDerivation, Document, Register, FromTransfersSource } from 'flow/examples/acmeBank/balances';
2+
3+
// Implementation for derivation balances.flow.yaml#/collections/examples~1acmeBank~1balances/derivation.
4+
export class Derivation implements IDerivation {
5+
fromTransfersPublish(
6+
source: FromTransfersSource,
7+
_register: Register,
8+
_previous: Register,
9+
): Document[] {
10+
return [
11+
// Debit the sender.
12+
{ user: source.sender, balance: -source.amount },
13+
// Credit the recipient.
14+
{ user: source.recipient, balance: source.amount },
15+
];
16+
}
17+
}

site/docs/concepts/bank/first-send-test.flow.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import:
22
- first-send.flow.yaml
33

44
tests:
5-
acmeBank/tests/first-send:
5+
examples/acmeBank/tests/first-send:
66
- ingest:
7-
collection: acmeBank/transfers
7+
collection: examples/acmeBank/transfers
88
documents:
99
- { id: 1, sender: alice, recipient: bob, amount: 10.25 }
1010
- { id: 2, sender: alice, recipient: bob, amount: 13.40 }
@@ -14,7 +14,7 @@ tests:
1414
- { id: 6, sender: alice, recipient: carol, amount: 7.13 }
1515

1616
- verify:
17-
collection: acmeBank/first-send
17+
collection: examples/acmeBank/first-send
1818
description: |
1919
Expect we filtered to the first interaction of each account pair.
2020
documents:

site/docs/concepts/bank/first-send.flow.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

site/docs/concepts/bank/first-send.flow.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import:
22
- transfers.flow.yaml
33

44
collections:
5-
acmeBank/first-send:
5+
examples/acmeBank/first-send:
66
schema: transfers.schema.yaml
77
key: [/id]
88

@@ -13,10 +13,13 @@ collections:
1313
schema: { type: boolean }
1414
initial: false
1515

16+
typescript:
17+
module: first-send.ts
18+
1619
transform:
1720
fromTransfers:
1821
source:
19-
name: acmeBank/transfers
22+
name: examples/acmeBank/transfers
2023
# Shuffle so that each account pair
2124
# is allocated its own register.
2225
shuffle:
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { IDerivation, Document, Register, FromTransfersSource } from 'flow/examples/acmeBank/first-send';
2+
3+
// Implementation for derivation first-send.flow.yaml#/collections/examples~1acmeBank~1first-send/derivation.
4+
export class Derivation implements IDerivation {
5+
fromTransfersUpdate(
6+
_source: FromTransfersSource,
7+
): Register[] {
8+
return [true]; // Toggle the register from `false` => `true`.
9+
}
10+
fromTransfersPublish(
11+
source: FromTransfersSource,
12+
_register: Register,
13+
previous: Register,
14+
): Document[] {
15+
// If the register was previously false, than this is the first
16+
// transfer for this account pair.
17+
if (!previous) {
18+
return [source];
19+
}
20+
return []; // Not the first transfer.
21+
}
22+
}

site/docs/concepts/bank/flagged-transfers-test.flow.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,32 @@ import:
22
- flagged-transfers.flow.yaml
33

44
tests:
5-
acmeBank/tests/flagged-transfers:
5+
examples/acmeBank/tests/flagged-transfers:
66
- ingest:
7-
collection: acmeBank/transfers
7+
collection: examples/acmeBank/transfers
88
description: Initial deposits.
99
documents:
1010
- { id: 1, sender: CREDIT, recipient: alice, amount: 100 }
1111
- { id: 2, sender: CREDIT, recipient: bob, amount: 100 }
1212
- { id: 3, sender: CREDIT, recipient: carol, amount: 100 }
1313

1414
- ingest:
15-
collection: acmeBank/transfers
15+
collection: examples/acmeBank/transfers
1616
description: Transfers between users.
1717
documents:
1818
- { id: 4, sender: alice, recipient: bob, amount: 50 }
1919
- { id: 5, sender: bob, recipient: carol, amount: 75 }
2020

2121
- ingest:
22-
collection: acmeBank/transfers
22+
collection: examples/acmeBank/transfers
2323
description: |
2424
Further transfers between users, with one being an overdraft.
2525
documents:
2626
- { id: 6, sender: alice, recipient: carol, amount: 75 }
2727
- { id: 7, sender: carol, recipient: bob, amount: 175 }
2828

2929
- verify:
30-
collection: acmeBank/flagged-transfers
30+
collection: examples/acmeBank/flagged-transfers
3131
description: |
3232
Expect transfer #6 was flagged as being overdrawn.
3333
partitions:

site/docs/concepts/bank/flagged-transfers.flow.ts

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)