import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common";
import { DataSource } from "typeorm";

@Injectable()
export class AuthGuardRefresh implements CanActivate {
  constructor(private readonly connection: DataSource) {}

  async canActivate(context: ExecutionContext): Promise<boolean> {
    try {
      const request = context.switchToHttp().getRequest();
      const tokenFromHeader = request.headers["authorization"];
      if (!tokenFromHeader) {
        return false;
      }
      console.log(tokenFromHeader, "tokenFromHeader");

      const [getToken] = await this.connection.query(
        `SELECT token FROM phr_jwt_token WHERE token = ? `,
        [tokenFromHeader]
      );
      console.log(getToken, "getToken");
      if (!getToken) {
        return false;
      }

      const accToken = await getToken.token;

      if (tokenFromHeader === accToken) {
        return true;
      } else {
        return false;
      }
    } catch (error) {
      console.error("Error in AuthGuard:", error);
      return false;
    }
  }
}
