import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, OneToMany, JoinColumn, ManyToOne } from 'typeorm';
import { Users } from './users.entity';

export enum ResponseStatus {
    FETCHED = "fetched",
    FETCH_LIMIT_EXCEEDED = "fetch_limit_exceeded",
}

export enum SearchFrom {
    FROM_CAMPAIGN = "campaign",
    FROM_BROWSE_INFLUENCER = "browse_influencer",
}


@Entity('search_logs')
export class SearchLog {
    @PrimaryGeneratedColumn('uuid')
    id: number;

    @ManyToOne(() => Users, user => user.searchLogs, { nullable: true, onDelete: 'SET NULL' })
    @JoinColumn({ name: 'userId' }) // foreign key column
    user: Users;

    @Column({ type: 'text', nullable: true })
    search: string;

    @Column({ type: "enum", enum: SearchFrom, default: SearchFrom.FROM_BROWSE_INFLUENCER })
    search_from: SearchFrom

    @Column({ type: 'json', nullable: true })
    filters: any; // filters/settings stored as JSON

    @Column({ nullable: true })
    action: string; // e.g. "search", "load_more"

    @Column({ type: "enum", enum: ResponseStatus, default: ResponseStatus.FETCHED })
    response_status: ResponseStatus

    @CreateDateColumn()
    createdAt: Date;
}
