This course is no longer maintained and may be out-of-date. While it remains available for reference, its content may not reflect the latest updates, best practices, or supported features.
Actions
Hasura Set Up
Let's head over to our users table to modify it a bit.
We shall be adding two columns:
wins(Integer, non-nullable, default: 0)losses(Integer, non-nullable, default: 0)
Next, go to the Permissions tab and update the Select permission for the user role.

Now, we create an new Action.
Go to the Actions tab and create a new action.
In the Action Definition, put
type Mutation {BattleComplete (id: Int!): BattleCompleteOutput}
In the new types definition, put
type BattleCompleteOutput {status : String!message : String!}

What this does is create a mutation action that takes in an Integer id as arguments and returns a BattleCompleteOutput object.
The BattleCompleteOutput is defined in the new types definition to contain two strings, status and message
Glitch Set Up
We're going to host another little project on Glitch to do out logic when BattleComplete is called.
Open the Glitch Project and click Remix To Edit
Go to env and set the SECRET to your ADMIN_SECRET

Great, rename the project appropriately and copy the link to the live app.
That's all the set up for that. Let me explain a bit of what this Glitch project does.
Battle Complete Explanation
When we call the BattleComplete action in Hasura, we set the argument to be the id of the battle we want to complete.
The Glitch projects gets the battle from Hasura, checks who wins by comparing hitTargets.Length with defendedTargets.Length.
Then it gets the two users in the battle from the shooter_id and defender_id of the battle and increases the wins column of the winner and losses column of the loser.
Then it deletes the battle. That's basically what the Glitch project does. Now let's connect it to our Hasura Action.
Connect To Hasura
Go back to the Hasura console and open the action we created. In the handler, paste the link to the Glitch live app + /battleComplete.
for example, if the link is https://glitch.com/edit/#!/shooter-battle-complete, we'll set the handler to https://glitch.com/edit/#!/shooter-battle-complete/battleComplete
That's it for setting up the action!
Build apps and APIs 10x faster
Built-in authorization and caching
8x more performant than hand-rolled APIs





