domain.ts 719 B

12345678910111213141516171819202122232425262728293031323334
  1. import { getRedisKey } from "../utils";
  2. import * as redis from "../redis";
  3. import knex from "../knex";
  4. interface FindDomain {
  5. address?: string;
  6. homepage?: string;
  7. uuid?: string;
  8. userId?: number;
  9. }
  10. export const findDomain = async ({
  11. userId,
  12. ...data
  13. }: FindDomain): Promise<Domain> => {
  14. const redisKey = getRedisKey.domain(data.address);
  15. const cachedDomain = await redis.get(redisKey);
  16. if (cachedDomain) return JSON.parse(cachedDomain);
  17. const query = knex<Domain>("domains").where(data);
  18. if (userId) {
  19. query.andWhere("user_id", userId);
  20. }
  21. const domain = await query.first();
  22. if (domain) {
  23. redis.set(redisKey, JSON.stringify(domain), "EX", 60 * 60 * 6);
  24. }
  25. return domain;
  26. };