|
| 1 | +-- BetterAuth schema migration |
| 2 | +-- Generated from better-auth v1.4.18 with organization + apiKey plugins |
| 3 | +-- DO NOT hand-edit — regenerate via: npx @better-auth/cli generate |
| 4 | +-- PlanetScale/Vitess: no foreign key constraints |
| 5 | + |
| 6 | +CREATE TABLE `user` ( |
| 7 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 8 | + `name` VARCHAR(255) NOT NULL, |
| 9 | + `email` VARCHAR(255) NOT NULL UNIQUE, |
| 10 | + `emailVerified` BOOLEAN NOT NULL DEFAULT FALSE, |
| 11 | + `image` VARCHAR(255), |
| 12 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 13 | + `updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
| 14 | +); |
| 15 | + |
| 16 | +CREATE TABLE `session` ( |
| 17 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 18 | + `userId` VARCHAR(36) NOT NULL, |
| 19 | + `token` VARCHAR(255) NOT NULL UNIQUE, |
| 20 | + `expiresAt` DATETIME NOT NULL, |
| 21 | + `ipAddress` VARCHAR(255), |
| 22 | + `userAgent` VARCHAR(255), |
| 23 | + `activeOrganizationId` VARCHAR(36), |
| 24 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 25 | + `updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
| 26 | +); |
| 27 | + |
| 28 | +CREATE TABLE `account` ( |
| 29 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 30 | + `userId` VARCHAR(36) NOT NULL, |
| 31 | + `accountId` VARCHAR(255) NOT NULL, |
| 32 | + `providerId` VARCHAR(255) NOT NULL, |
| 33 | + `accessToken` TEXT, |
| 34 | + `refreshToken` TEXT, |
| 35 | + `accessTokenExpiresAt` DATETIME, |
| 36 | + `refreshTokenExpiresAt` DATETIME, |
| 37 | + `scope` VARCHAR(255), |
| 38 | + `idToken` TEXT, |
| 39 | + `password` VARCHAR(255), |
| 40 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 41 | + `updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
| 42 | +); |
| 43 | + |
| 44 | +CREATE TABLE `verification` ( |
| 45 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 46 | + `identifier` VARCHAR(255) NOT NULL, |
| 47 | + `value` VARCHAR(255) NOT NULL, |
| 48 | + `expiresAt` DATETIME NOT NULL, |
| 49 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 50 | + `updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
| 51 | +); |
| 52 | + |
| 53 | +CREATE TABLE `organization` ( |
| 54 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 55 | + `name` VARCHAR(255) NOT NULL, |
| 56 | + `slug` VARCHAR(255) NOT NULL UNIQUE, |
| 57 | + `logo` VARCHAR(255), |
| 58 | + `metadata` TEXT, |
| 59 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP |
| 60 | +); |
| 61 | + |
| 62 | +CREATE TABLE `member` ( |
| 63 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 64 | + `organizationId` VARCHAR(36) NOT NULL, |
| 65 | + `userId` VARCHAR(36) NOT NULL, |
| 66 | + `role` VARCHAR(255) NOT NULL DEFAULT 'member', |
| 67 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 68 | + INDEX `idx_member_org` (`organizationId`), |
| 69 | + INDEX `idx_member_user` (`userId`) |
| 70 | +); |
| 71 | + |
| 72 | +CREATE TABLE `invitation` ( |
| 73 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 74 | + `organizationId` VARCHAR(36) NOT NULL, |
| 75 | + `email` VARCHAR(255) NOT NULL, |
| 76 | + `role` VARCHAR(255), |
| 77 | + `status` VARCHAR(255) NOT NULL DEFAULT 'pending', |
| 78 | + `expiresAt` DATETIME NOT NULL, |
| 79 | + `inviterId` VARCHAR(36) NOT NULL, |
| 80 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 81 | + INDEX `idx_invitation_org` (`organizationId`), |
| 82 | + INDEX `idx_invitation_email` (`email`) |
| 83 | +); |
| 84 | + |
| 85 | +CREATE TABLE `apikey` ( |
| 86 | + `id` VARCHAR(36) NOT NULL PRIMARY KEY, |
| 87 | + `name` VARCHAR(255), |
| 88 | + `start` VARCHAR(255), |
| 89 | + `prefix` VARCHAR(255), |
| 90 | + `key` VARCHAR(255) NOT NULL, |
| 91 | + `userId` VARCHAR(36) NOT NULL, |
| 92 | + `refillInterval` INT, |
| 93 | + `refillAmount` INT, |
| 94 | + `lastRefillAt` DATETIME, |
| 95 | + `enabled` BOOLEAN DEFAULT TRUE, |
| 96 | + `rateLimitEnabled` BOOLEAN DEFAULT TRUE, |
| 97 | + `rateLimitTimeWindow` INT, |
| 98 | + `rateLimitMax` INT, |
| 99 | + `requestCount` INT DEFAULT 0, |
| 100 | + `remaining` INT, |
| 101 | + `lastRequest` DATETIME, |
| 102 | + `expiresAt` DATETIME, |
| 103 | + `createdAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 104 | + `updatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| 105 | + `permissions` TEXT, |
| 106 | + `metadata` TEXT, |
| 107 | + INDEX `idx_apikey_key` (`key`), |
| 108 | + INDEX `idx_apikey_user` (`userId`) |
| 109 | +); |
0 commit comments