interface User {
id: string;
nickname: string;
email: string;
password: string;
}
interface QuestResouce {
id: string;
name: string;
}
interface CardLink {
id: string;
toId: string;
// не в MVP
weight?: {
// Каким образом данная ссылка повлияет на каждый ресурс
[resourceName: sting]: number;
}
}
interface Card {
id: string;
questId: string;
title: string;
imagePath?: string;
description?: string;
links?: { [answer: string]: CardLink };
type: 'choose' | 'input' | 'finish';
}
interface Quest {
id: string;
title: string;
description: string;
imagePath: string;
firstCardId: string | null;
authorId: string | null;
// не в MVP
resources: {
// Начальное значение ресурса
[resourceName: string]: number;
};
}
interface HistoryItem {
questId: string;
cardId: string;
stage: 'process' | 'end';
resources: {
[resourceName: string]: number;
};
}
interface History {
id: string;
userId: string;
quests: Array<HistoryItem>;
}
interface Token {
key: string;
expires: string;
}
interface Sessions {
[userId: string]: Array<Token>;
}
- title: 30
- description: 140
- nickname: 16