PJI110-SALA-001GRUPO-009-2023 / read-together-server

0 stars 0 forks source link

ID (Chaves Primárias) precisam de um gerador #9

Closed felipe-dmb closed 1 year ago

felipe-dmb commented 1 year ago

Motivação

Atualmente, precisamos criar um número para os IDs no back, ou ser fornecido no front, pois no DB não há AUTO_INCREMENT ou outro gerador para as chaves primárias.

Objetivo

Criar gerador para PRIMARY KEYs na tabelas ou propor gerador único no backend.

julioroncal commented 1 year ago

Foi gerado o AUTO_INCREMENT das chaves primarias.

felipe-dmb commented 1 year ago

Entendido.

felipe-dmb commented 1 year ago

@julioroncal manter aberta, pois o schema ainda não foi atualizado no backend

felipe-dmb commented 1 year ago

@julioroncal @marlonbl

Correção de Falhas

Tentativa de implementar o ReadTogether-DER-v4.2 (script).sql obteve alguns resultados inesperados:

Shell:

The following models were ignored as they do not have a valid unique identifier or id. This is currently not supported by the Prisma Client.
- "Lista_Espera"
- "Moderador"

Prisma schema:

model Usuario {
  idUsuario      Int             @id @unique(map: "id_usuario_UNIQUE") @default(autoincrement()) @map("id_usuario")
  nome           String          @db.VarChar(45)
  email          String          @unique(map: "email_UNIQUE") @db.VarChar(255)
  dataNascimento DateTime?       @map("dt_nascimento") @db.Date
  bio            String?         @db.VarChar(500)
  imagem         Bytes?          @db.Blob
  imagemUrl      String?         @map("imagem_url") @db.VarChar(2048)
  senha          String          @db.VarChar(60)
  Lista_Espera   Lista_Espera[]  @ignore
  membroDoClube  MembroDoClube[]
  Moderador      Moderador[]     @ignore
  postagem       Postagem[]

  @@map("USUARIO")
}

/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by the Prisma Client.
model Lista_Espera {
  PARTICIPANTE_NA_LEITURA_LEITURA_id_leitura Int
  PARTICIPANTE_NA_LEITURA_ROLE_cod_role      Int
  USUARIO_id_usuario                         Int
  Status                                     Int?                  @db.TinyInt
  PARTICIPANTE_NA_LEITURA                    ParticipanteNaLeitura @relation(fields: [PARTICIPANTE_NA_LEITURA_LEITURA_id_leitura, PARTICIPANTE_NA_LEITURA_ROLE_cod_role], references: [idLeitura, codRole], onDelete: NoAction, onUpdate: NoAction, map: "fk_Lista_Espera_PARTICIPANTE_NA_LEITURA1")
  USUARIO                                    Usuario               @relation(fields: [USUARIO_id_usuario], references: [idUsuario], onDelete: NoAction, onUpdate: NoAction, map: "fk_Lista_Espera_USUARIO1")

  @@index([PARTICIPANTE_NA_LEITURA_LEITURA_id_leitura, PARTICIPANTE_NA_LEITURA_ROLE_cod_role], map: "fk_Lista_Espera_PARTICIPANTE_NA_LEITURA1_idx")
  @@index([USUARIO_id_usuario], map: "fk_Lista_Espera_USUARIO1_idx")
  @@ignore
}

/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by the Prisma Client.
model Moderador {
  USUARIO_id_usuario Int
  USUARIO            Usuario @relation(fields: [USUARIO_id_usuario], references: [idUsuario], onDelete: NoAction, onUpdate: NoAction, map: "fk_Moderador_USUARIO1")

  @@index([USUARIO_id_usuario], map: "fk_Moderador_USUARIO1_idx")
  @@ignore
}

Reparem nas propriedades @ignore e @@ignore, indicam que o Prisma Client não lidará com elas. Por favor, rever também o caso de uso dessas tabelas, não me parece adequado que a lista de espera esteja vinculada a leitura em vez de vincular ao clube, também não está claro a finalidade da tabela moderador Issue relacionada #8

Fora isso, a tabela Leitura possui ISBN e ID_Livro, ambos obrigatórios, e a PK para ambos. Isso me pareceu equivocado, pois, para a primeira entrega, a integração com os livros ficou definida como opcional.