import PropTypes from "prop-types";
import scheduledQueryStatsInterface, {
  IScheduledQueryStats,
} from "./scheduled_query_stats";

export default PropTypes.shape({
  created_at: PropTypes.string,
  updated_at: PropTypes.string,
  id: PropTypes.number.isRequired,
  pack_id: PropTypes.number.isRequired,
  name: PropTypes.string.isRequired,
  query_id: PropTypes.number.isRequired,
  query_name: PropTypes.string.isRequired,
  query: PropTypes.string.isRequired,
  interval: PropTypes.number.isRequired,
  snapshot: PropTypes.bool,
  removed: PropTypes.bool,
  platform: PropTypes.string,
  version: PropTypes.string,
  shard: PropTypes.number,
  denylist: PropTypes.bool,
  stats: scheduledQueryStatsInterface,
});

export interface IPackQueryFormData {
  interval?: number;
  name?: string;
  shard?: number;
  query?: string;
  query_id?: number;
  pack_id?: number;
  logging_type?: string;
  removed?: boolean;
  snapshot?: boolean;
  platform?: string;
  version?: string;
}
export interface IScheduledQuery {
  created_at: string;
  updated_at: string;
  id: number;
  pack_id: number;
  name: string;
  query_id: number;
  query_name: string;
  query: string;
  interval: number;
  snapshot: boolean;
  removed: boolean;
  platform?: string;
  version?: string;
  shard?: number | undefined;
  denylist?: boolean;
  logging_type?: string;
  stats: IScheduledQueryStats;
  team_id?: number;
}
export interface IEditScheduledQuery extends IScheduledQuery {
  type: "global_scheduled_query" | "team_scheduled_query";
}
export interface ILoadAllGlobalScheduledQueriesResponse {
  global_schedule: IScheduledQuery[];
}

export interface ILoadAllTeamScheduledQueriesResponse {
  scheduled: IScheduledQuery[];
}

export interface IUpdateScheduledQuery {
  interval?: number;
  logging_type: string;
  platform?: string;
  version?: string;
  shard?: number;
}

export interface IUpdateTeamScheduledQuery extends IUpdateScheduledQuery {
  team_id: number;
}
