hashtune / Hashtune-Marketplace-Client

Hashtune's Marketplace Client Repository
https://hashtune.co
0 stars 0 forks source link

Building event sourcing module #128

Open humamaboalraja opened 2 years ago

humamaboalraja commented 2 years ago

TODOS

Events types

No Event type Description
1 owner_auction_created Auction Created
2 owner_sale_created Sale Created
3 owner_sale_ended Sale Ended
4 buyer_sale_created Listing Purchased
5 owner_bid_received Bid Received -> [Accept Bid if no reserve price]
6 buyer_bid_received Bid Made [Withdraw Funds if no reserve price]
7 owner_bid_accepted Bid Accepted
8 buyer_bid_accepted Bid Accepted
9 owner_bid_automatically_accepted Bid Automatically Accepted
10 buyer_bid_automatically_accepted Bid Won
11 buyer_bid_automatically_lost Bid Lost -> [Withdraw Funds]
12 artist_sale_received_royalties Received Royalties on Sale
13 artist_auction_received_royalties Received Royalties on Auction
14 buyer_bid_lost Bid Lost -> [Withdraw Funds]
15 buyer_bid_exceeded Bid Exceeded
eemmiillyy commented 2 years ago
prisma.events.create({
      listingId: "abc",
      userId: "xyz",
      create: {
           eventData: {
                eventType: "owner_auction_created",
                price: "10"
            }
      }
}) 
eemmiillyy commented 2 years ago


owner_sale_created Sale Created

owner_sale_ended: Sale Ended 
buyer_sale_created: Listing Purchased

owner_bid_received: Bid Received -> [Accept Bid if no reserve price] 
buyer_bid_received: Bid Made [Withdraw Funds if no reserve price]

owner_bid_accepted: Bid Accepted
buyer_bid_accepted: Bid Accepted
buyer_bid_lost: Bid Lost -> [Withdraw Funds]

owner_bid_automatically_accepted: Bid Automatically Accepted
buyer_bid_automatically_accepted: Bid Won
buyer_bid_automatically_lost: Bid Lost -> [Withdraw Funds]

artist_sale_received_royalties: Received Royalties on Sale
artist_auction_received_royalties: Received Royalties on Auction

buyer_bid_exceeded: Bid Exceeded ```
eemmiillyy commented 2 years ago
CREATE TABLE events
(
    id       SERIAL PRIMARY KEY,
    listingId foreignKeyToArtwork NOT NULL,
    userId foreignKeyToUser NOT NULL,
    version  BIGINT NOT NULL,
    eventData   foreignKeyToEventData   NOT NULL,
    UNIQUE (stream_id, version)
);
CREATE TABLE eventData
(
    id       SERIAL PRIMARY KEY,
    eventType   enum   NOT NULL,
     price            BIGINT NOT NULL
    txHash         BIGINT  NOT NULL
    createdAt Date
)
eemmiillyy commented 2 years ago
Query ArtworkEvents(artworkId: string) {
    get all events where artworkId === streamId and order by version
}
Query UserEvents(userId: string) {
   get all artworks from user, 
   where user_id === userId and order by version
}