Opetushallitus/eperusteet-frontend-utils

View on GitHub
vue/src/api/amosaa.ts

Summary

Maintainability
A
3 hrs
Test Coverage
import { axiosHandler, successfulResponseHandler } from './common';
import { Configuration, JulkinenApiAxiosParamCreator, LiitetiedostotApiAxiosParamCreator } from '../generated/amosaa';
import axios, { AxiosInstance } from 'axios';
import _ from 'lodash';

import * as AmosaaApi from '../generated/amosaa';
import Qs from 'qs';
import { createLogger } from '../utils/logger';
import { DokumentitApiAxiosParamCreator } from '@shared/generated/amosaa';

export import DokumenttiDtoTilaEnum = AmosaaApi.DokumenttiDtoTilaEnum;
export import MatalaTyyppiEnum = AmosaaApi.MatalaTyyppiEnum;
export import OpetussuunnitelmaMuokkaustietoDtoKohdeEnum = AmosaaApi.OpetussuunnitelmaMuokkaustietoDtoKohdeEnum;
export import OpetussuunnitelmaMuokkaustietoDtoTapahtumaEnum = AmosaaApi.OpetussuunnitelmaMuokkaustietoDtoTapahtumaEnum;
export import OpetussuunnitelmaTilastoDtoTilaEnum = AmosaaApi.OpetussuunnitelmaTilastoDtoTilaEnum;
export import OpetussuunnitelmaDtoTilaEnum = AmosaaApi.OpetussuunnitelmaDtoTilaEnum;
export import PerusteDtoKoulutustyyppiEnum = AmosaaApi.PerusteDtoKoulutustyyppiEnum;
export import SisaltoViiteKevytDtoTyyppiEnum = AmosaaApi.SisaltoViiteKevytDtoTyyppiEnum;
export import TutkinnonOsaKevytDtoTyyppiEnum = AmosaaApi.TutkinnonOsaKevytDtoTyyppiEnum;
export import TutkinnonosaDtoTyyppiEnum = AmosaaApi.TutkinnonosaDtoTyyppiEnum;
export import SisaltoViiteDtoTyyppiEnum = AmosaaApi.SisaltoViiteDtoTyyppiEnum;
export import OpetussuunnitelmaDtoTyyppiEnum = AmosaaApi.OpetussuunnitelmaDtoTyyppiEnum;
export import NavigationNodeDtoTypeEnum = AmosaaApi.NavigationNodeDtoTypeEnum;
export import OpetussuunnitelmaLuontiDtoTyyppiEnum = AmosaaApi.OpetussuunnitelmaLuontiDtoTyyppiEnum;
export import OpintokokonaisuusDtoTyyppiEnum = AmosaaApi.OpintokokonaisuusDtoTyyppiEnum;
export import KoulutuksenOsaDtoKoulutusOsanTyyppiEnum = AmosaaApi.KoulutuksenOsaDtoKoulutusOsanTyyppiEnum;
export import KayttajaoikeusDtoOikeusEnum = AmosaaApi.KayttajaoikeusDtoOikeusEnum;
export import OpetussuunnitelmaBaseDtoJotpatyyppiEnum = AmosaaApi.OpetussuunnitelmaBaseDtoJotpatyyppiEnum;
export import LaajuusYksikkoEnum = AmosaaApi.LaajuusYksikkoEnum;
export import JulkaisuBaseDtoTilaEnum = AmosaaApi.JulkaisuBaseDtoTilaEnum;
export import OmaOsaAlueDtoTyyppiEnum = AmosaaApi.OmaOsaAlueDtoTyyppiEnum;
export import OpetussuunnitelmaKaikkiDtoJulkaisukieletEnum = AmosaaApi.OpetussuunnitelmaKaikkiDtoJulkaisukieletEnum;

const logger = createLogger('AmosaaAxios');
const basePath = '';
export const baseURL = '/eperusteet-amosaa-service';

const ax = axios.create({
  baseURL,
  paramsSerializer: (params: any) => Qs.stringify(params, { arrayFormat: 'repeat' }),
});

ax.interceptors.request.use(_.identity, axiosHandler('Request error'));
ax.interceptors.response.use(successfulResponseHandler(), axiosHandler('Response error'));

// https://github.com/Microsoft/TypeScript/issues/20719
type BaseAPIConstructor<T> = new(configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => T;

const configuration: Configuration = { basePath };

function initApi<T>(X: BaseAPIConstructor<T>): T {
  return new X(configuration, basePath, ax);
}

export const Api = ax;

export const Aikataulut = initApi(AmosaaApi.AikataulutApi);
export const Arviointiasteikot = initApi(AmosaaApi.ArviointiasteikotApi);
export const Dokumentit = initApi(AmosaaApi.DokumentitApi);
export const DokumentitParams = DokumentitApiAxiosParamCreator(configuration);
export const JulkinenApi = initApi(AmosaaApi.JulkinenApi);
export const JulkinenApiParams = JulkinenApiAxiosParamCreator(configuration);
export const KayttajaApi = initApi(AmosaaApi.KayttajaApi);
export const Koodistot = initApi(AmosaaApi.KoodistotApi);
export const Koulutustoimijat = initApi(AmosaaApi.KoulutustoimijatApi);
export const Liitetiedostot = initApi(AmosaaApi.LiitetiedostotApi);
export const LiitetiedostotParam = LiitetiedostotApiAxiosParamCreator(configuration);
export const Muokkaustiedot = initApi(AmosaaApi.MuokkaustietoApi);
export const Ohjeet = initApi(AmosaaApi.OhjeetApi);
export const Opetussuunnitelmat = initApi(AmosaaApi.OpetussuunnitelmatApi);
export const Perusteet = initApi(AmosaaApi.PerusteetApi);
export const SisaltoviiteLukko = initApi(AmosaaApi.SisaltoviiteLukkoApi);
export const Sisaltoviitteet = initApi(AmosaaApi.SisaltoviitteetApi);
export const Ulkopuoliset = initApi(AmosaaApi.UlkopuolisetApi);
export const Kayttajaoikeudet = initApi(AmosaaApi.KayttajaoikeudetApi);
export const Julkaisut = initApi(AmosaaApi.JulkaisutApi);
export const Palautteet = initApi(AmosaaApi.PalautteetApi);
export const Maintenance = initApi(AmosaaApi.MaintenanceApi);
export const ExternalApi = initApi(AmosaaApi.ExternalApi);
export const TutkinnonosaApi = initApi(AmosaaApi.TutkinnonosaApi);
export const OsaAlueApi = initApi(AmosaaApi.OsaAlueApi);

export type ArviointiasteikkoDto = AmosaaApi.ArviointiasteikkoDto;
export type DokumenttiDto = AmosaaApi.DokumenttiDto;
export type DokumenttiKuvaDto = AmosaaApi.DokumenttiKuvaDto;
export type EtusivuDto = AmosaaApi.EtusivuDto;
export type KoulutustoimijaBaseDto = AmosaaApi.KoulutustoimijaBaseDto;
export type KoulutustoimijaDto = AmosaaApi.KoulutustoimijaDto;
export type KoulutustoimijaJulkinenDto = AmosaaApi.KoulutustoimijaJulkinenDto;
export type Matala = AmosaaApi.Matala;
export type NavigationNodeDto = AmosaaApi.NavigationNodeDto;
export type OhjeDto = AmosaaApi.OhjeDto;
export type OrganisaatioHierarkiaDto = AmosaaApi.OrganisaatioHierarkiaDto;
export type KoulutustoimijaYstavaDto = AmosaaApi.KoulutustoimijaYstavaDto;
export type OpetussuunnitelmaAikatauluDto = AmosaaApi.OpetussuunnitelmaAikatauluDto;
export type OpetussuunnitelmaBaseDto = AmosaaApi.OpetussuunnitelmaBaseDto;
export type OpetussuunnitelmaDto = AmosaaApi.OpetussuunnitelmaDto;
export type OpetussuunnitelmaLuontiDto = AmosaaApi.OpetussuunnitelmaLuontiDto;
export type OpetussuunnitelmaMuokkaustietoDto = AmosaaApi.OpetussuunnitelmaMuokkaustietoDto;
export type OpetussuunnitelmaTilastoDto = AmosaaApi.OpetussuunnitelmaTilastoDto;
export type PageOpetussuunnitelmaBaseDto = AmosaaApi.PageOpetussuunnitelmaBaseDto;
export type PageOpetussuunnitelmaDto = AmosaaApi.PageOpetussuunnitelmaDto;
export type PerusteDto = AmosaaApi.PerusteDto;
export type PerusteKevytDto = AmosaaApi.PerusteKevytDto;
export type SisaltoViiteKevytDto = AmosaaApi.SisaltoViiteKevytDto;
export type SisaltoViiteRakenneDto = AmosaaApi.SisaltoViiteRakenneDto;
export type SisaltoviiteMatalaDto = AmosaaApi.Matala;
export type TiedoteDto = AmosaaApi.TiedoteDto;
export type TutkinnonosaDto = AmosaaApi.TutkinnonosaDto;
export type TutkinnonosaToteutusDto = AmosaaApi.TutkinnonosaToteutusDto;
export type VapaaTekstiDto = AmosaaApi.VapaaTekstiDto;
export type PageSisaltoviiteLaajaDto = AmosaaApi.PageSisaltoviiteLaajaDto;
export type SisaltoviiteLaajaDto = AmosaaApi.SisaltoviiteLaajaDto;
export type SisaltoViiteDto = AmosaaApi.SisaltoViiteDto;
export type VanhentunutPohjaperusteDto = AmosaaApi.VanhentunutPohjaperusteDto;
export type PoistettuDto = AmosaaApi.PoistettuDto;
export type KayttajaDto = AmosaaApi.KayttajaDto;
export type KayttajaoikeusDto = AmosaaApi.KayttajaoikeusDto;
export type Validointi = AmosaaApi.Validointi;
export type JulkaisuBaseDto = AmosaaApi.JulkaisuBaseDto;
export type PalauteDto = AmosaaApi.PalauteDto;
export type KoulutuksenJarjestajaDto = AmosaaApi.KoulutuksenJarjestajaDto;
export type OpetussuunnitelmaKaikkiDto = AmosaaApi.OpetussuunnitelmaKaikkiDto;
export type SisaltoviiteOpintokokonaisuusExternalDto = AmosaaApi.SisaltoviiteOpintokokonaisuusExternalDto;
export type PerusteenOsaDto = AmosaaApi.PerusteenOsaDto;
export type KotoTaitotasoLaajaAlainenOsaaminenDto = AmosaaApi.KotoTaitotasoLaajaAlainenOsaaminenDto;
export type SisaltoViiteExportDto = AmosaaApi.SisaltoViiteExportDto;
export type OmaOsaAlueToteutusDto = AmosaaApi.OmaOsaAlueToteutusDto;
export type OletusToteutusDto = AmosaaApi.OletusToteutusDto;
export type OsaamisenArvioinninToteutussuunnitelmaDto = AmosaaApi.OsaamisenArvioinninToteutussuunnitelmaDto;

export interface OpetussuunnitelmaQuery {
  perusteenDiaarinumero?: string;
  perusteId?: number;
  organisaatio?: string;
  tyyppi?: Array<string>;
  sivu?: number;
  sivukoko?: number;
  nimi?: string;
  kieli?: string;
  oppilaitosTyyppiKoodiUri?: string,
  koulutustyyppi?: Array<string>,
  tuleva?: boolean,
  voimassaolo?: boolean,
  poistunut?: boolean,
  jotpatyyppi?: Array<string>,
};

export async function getJulkisetOpetussuunnitelmat(query: OpetussuunnitelmaQuery) {
  return JulkinenApi.findOpetussuunnitelmatJulkaisut(
    query.perusteenDiaarinumero,
    query.perusteId,
    query.organisaatio,
    query.tyyppi,
    query.sivu,
    query.sivukoko,
    query.nimi,
    query.kieli,
    query.oppilaitosTyyppiKoodiUri,
    query.koulutustyyppi,
    query.tuleva,
    query.voimassaolo,
    query.poistunut,
    query.jotpatyyppi,
  );
}