import { MySql } from "../helper/mysql";

export default class UserStoreRepository {
  async show(param: Record<string, any>): Promise<Record<string, any>> {
    const query = `
      SELECT * FROM store
      WHERE active = ? AND userId = ?
    `;
    const values = [true, param.userId];

    const result = await MySql.query(query, values);

    const data = {
      data: result[0],
    };

    return data;
  }

  async create(param: Record<string, any>): Promise<void> {
    const query = `
      INSERT INTO store (${Object.keys(param).join(", ")})
      VALUES (${Object.values(param)
        .map(() => "?")
        .join(", ")})
    `;
    const values = Object.values(param);

    await MySql.query(query, values);
  }

  async update(param: Record<string, any>): Promise<void> {
    const query = `
      UPDATE store
      SET ${Object.keys(param)
        .map((key) => `${key} = ?`)
        .join(", ")} 
      WHERE id = ?
    `;
    const values = [...Object.values(param), param.id];

    await MySql.query(query, values);
  }
}

// export default class UserStoreRepository {
//   async show(param: Record<string, any>): Promise<Record<string, any>> {
//     const result = await prisma.store.findFirst({
//       where: { active: true, userId: param.userId },
//     });

//     const data = {
//       data: result,
//     };

//     return data;
//   }

//   async create(param: Record<string, any>): Promise<void> {
//     await prisma.store.create({
//       data: param as any,
//     });
//   }

//   async update(param: Record<string, any>): Promise<void> {
//     await prisma.store.update({
//       where: {
//         id: param.id,
//       },
//       data: param as any,
//     });
//   }
// }
