| 510 | }; |
| 511 | |
| 512 | export const createApiKey = async ( |
| 513 | userId: string, |
| 514 | input: { |
| 515 | name: string; |
| 516 | prefix?: string; |
| 517 | expiresIn?: number; |
| 518 | metadata: { |
| 519 | organizationId: string; |
| 520 | }; |
| 521 | rateLimitEnabled?: boolean; |
| 522 | rateLimitTimeWindow?: number; |
| 523 | rateLimitMax?: number; |
| 524 | remaining?: number; |
| 525 | refillAmount?: number; |
| 526 | refillInterval?: number; |
| 527 | }, |
| 528 | ) => { |
| 529 | const result = await auth.createApiKey({ |
| 530 | body: { |
| 531 | name: input.name, |
| 532 | expiresIn: input.expiresIn, |
| 533 | prefix: input.prefix, |
| 534 | rateLimitEnabled: input.rateLimitEnabled, |
| 535 | rateLimitTimeWindow: input.rateLimitTimeWindow, |
| 536 | rateLimitMax: input.rateLimitMax, |
| 537 | remaining: input.remaining, |
| 538 | refillAmount: input.refillAmount, |
| 539 | refillInterval: input.refillInterval, |
| 540 | userId, |
| 541 | }, |
| 542 | }); |
| 543 | |
| 544 | if (input.metadata) { |
| 545 | await db |
| 546 | .update(apikey) |
| 547 | .set({ metadata: JSON.stringify(input.metadata) }) |
| 548 | .where(eq(apikey.id, result.id)); |
| 549 | } |
| 550 | |
| 551 | return result; |
| 552 | }; |