Contrato – Parte 3

To Share and +4 nLEARNs

Pensando em um contrato para eleições, vamos considerar as principais funcionalidades:
– Criar eleição
– Adicionar candidato à eleição
– Votar

Para iniciar, vamos criar uma variável onde iremos armazenar todos os dados da eleição, como número de votos, candidatos, tempo de início e encerramento, eleitores e todas as tipagens relacionadas à variável.

import { NearBindgen} from 'near-sdk-js';

@NearBindgen({})
class VotingNear {
  elections: UnorderedMap<Election> = new UnorderedMap<Election>("elections")
}

Para organizar mejor nuestro proyecto, crea un archivo `src/model.ts` para definir nuestras clases para Elección.

export class Election {
  id: number
  name: string
  startsAt: bigint
  endsAt: bigint
  candidates: Candidate[]
  totalVotes: number
  voters: Voter[]

  constructor({ endsAt, id, name, startsAt, candidates, totalVotes, voters }: Election) {
    this.id = id
    this.endsAt = endsAt
    this.name = name
    this.startsAt = startsAt
    this.totalVotes = totalVotes
    this.candidates = candidates
    this.voters = voters
  }
}

export class Candidate {
  accountId: string
  totalVotes: number

  constructor({ accountId }: Candidate) {
    this.accountId = accountId
    this.totalVotes = 0
  }
}

export class Voter {
  accountId: string
  votedCandidateAccountId: string
  votedAt: bigint

  constructor({ accountId,  votedCandidateAccountId, votedAt }: Voter) {
    this.accountId = accountId
    this.votedCandidateAccountId = votedCandidateAccountId
    this.votedAt = votedAt
  }
}

Para organizar melhor nosso projeto, crie um arquivo src/model.ts para criarmos nossas classes para Election.

Generate comment with AI 2 nL
Scroll to Top