users.repository.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { query } from '.';
  2. import { User } from '../types/user.type';
  3. // 创建用户表
  4. export const createUsersTable = async () => {
  5. try {
  6. await query(`
  7. CREATE TABLE IF NOT EXISTS users (
  8. id SERIAL PRIMARY KEY,
  9. name VARCHAR(50) NOT NULL,
  10. email VARCHAR(100) UNIQUE NOT NULL
  11. )
  12. `);
  13. return { message: 'Users table created' };
  14. } catch (error) {
  15. const err = error as Error;
  16. throw new Error(`Failed to create table: ${err.message}`);
  17. }
  18. };
  19. // 获取所有用户
  20. export const getAllUsers = async (): Promise<User[]> => {
  21. try {
  22. const result = await query('SELECT * FROM users');
  23. return result.rows;
  24. } catch (error) {
  25. const err = error as Error;
  26. throw new Error(`Failed to get users: ${err.message}`);
  27. }
  28. };
  29. // 创建用户
  30. export const createUser = async (user: Omit<User, 'id'>): Promise<User> => {
  31. try {
  32. const result = await query(
  33. 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *',
  34. [user.name, user.email]
  35. );
  36. return result.rows[0];
  37. } catch (error) {
  38. const err = error as Error;
  39. throw new Error(`Failed to create user: ${err.message}`);
  40. }
  41. };