# Replit DB & Auth Integration A global `replit` object is exposed, containing all functions you need for interacting with Replit Auth and DB. ## Database ### `replit.getData(key: string, default?: Data): Promise<Data | null>` Get data from replit db, returns a `Promise` containing the data (`null` if key doesn't exists). Data is automatically `JSON.parsed()`-ed. Can optionally provide `default` to set the default value if the key doesn't exist. ### `replit.setData(key: string, val: Data): Promise<Data>` Set data to replit db. Data is automatically `JSON.stringify()`-ed. Returns a `Promise` that resolves when the operation is complete. ### `replit.delData(key: string): Promise<void>` Delete a key from database. ### `replit.listData(): Promise<string[]>` Get all keys in database. ### `replit.clearData(): Promise<void>` **BE CAREFUL** Nuke the database. ### Database Example ```js // get current high score from DB replit.getData("highscore").then((highscore) => { // update highest score in DB if user just got a higer one if (score > highscore) { highscore = score; replit.setData("highscore", highscore); } add([ text("High score: " + highscore), pos(20, 20), ]); }); ``` ## Auth ### `replit.auth(): Promise<User | null>` Opens a window that prompts user to log in and authenticate. Returns a Promise that contains the user data if successful. ### `replit.getUser(): Promise<User | null>` Get the user without initiating an auth process. Returns a Promise of the user if they're already authed (has auth token in cookies), `null` if not. ### `replit.getUserOrAuth(): Promise<User | null>` Like `getUser()`, but initiates an auth if auth doesn't exist. a `User` looks like this: ```ts User { id: string, name: string, } ``` ### Auth Example ```js replit.getUserOrAuth().then((user) => { if (user) { // insert an entry to DB with the user name as key replit.setData(user.name, 0); } }); ``` Check out `helper.ts` and `run.js` to see how they work and tweak around.