stacker.news/prisma/migrations/20220316212238_earn/migration.sql

31 lines
983 B
PL/PgSQL

-- CreateTable
CREATE TABLE "Earn" (
"id" SERIAL NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"msats" INTEGER NOT NULL,
"userId" INTEGER NOT NULL,
PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "Earn.created_at_index" ON "Earn"("created_at");
-- CreateIndex
CREATE INDEX "Earn.userId_index" ON "Earn"("userId");
-- AddForeignKey
ALTER TABLE "Earn" ADD FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- charge the user for the auction item
CREATE OR REPLACE FUNCTION earn(user_id INTEGER, earn_msats INTEGER) RETURNS void AS $$
DECLARE
BEGIN
PERFORM ASSERT_SERIALIZED();
-- insert into earn
INSERT INTO "Earn" (msats, "userId") VALUES (earn_msats, user_id);
-- give the user the sats
UPDATE users SET msats = msats + earn_msats WHERE id = user_id;
END;
$$ LANGUAGE plpgsql;