feat: support import and export with prompts (#330)

* feat: support import and export prompts

* test: update importExports.test.ts

* Delete .gitpod.yml
This commit is contained in:
Superman
2023-04-02 12:59:51 +08:00
committed by GitHub
parent 462ca9bb04
commit d68f77867d
4 changed files with 146 additions and 13 deletions
+106 -3
View File
@@ -1,4 +1,4 @@
import { ExportFormatV1, ExportFormatV2 } from '@/types/export';
import { ExportFormatV1, ExportFormatV2, ExportFormatV4 } from '@/types/export';
import { OpenAIModels, OpenAIModelID } from '@/types/openai';
import { DEFAULT_SYSTEM_PROMPT } from '@/utils/app/const';
import { it, describe, expect } from 'vitest';
@@ -8,6 +8,7 @@ import {
isExportFormatV1,
isExportFormatV2,
isExportFormatV3,
isExportFormatV4,
isLatestExportFormat,
} from '@/utils/app/importExport';
@@ -47,6 +48,18 @@ describe('Export Format Functions', () => {
expect(isExportFormatV3(obj)).toBe(false);
});
});
describe('isExportFormatV4', () => {
it('should return true for v4 format', () => {
const obj = { version: 4, history: [], folders: [], prompts: [] };
expect(isExportFormatV4(obj)).toBe(true);
});
it('should return false for non-v4 formats', () => {
const obj = { version: 5, history: [], folders: [], prompts: [] };
expect(isExportFormatV4(obj)).toBe(false);
});
});
});
describe('cleanData Functions', () => {
@@ -71,7 +84,7 @@ describe('cleanData Functions', () => {
const obj = cleanData(data);
expect(isLatestExportFormat(obj)).toBe(true);
expect(obj).toEqual({
version: 3,
version: 4,
history: [
{
id: 1,
@@ -92,6 +105,7 @@ describe('cleanData Functions', () => {
},
],
folders: [],
prompts:[]
});
});
});
@@ -125,7 +139,7 @@ describe('cleanData Functions', () => {
const obj = cleanData(data);
expect(isLatestExportFormat(obj)).toBe(true);
expect(obj).toEqual({
version: 3,
version: 4,
history: [
{
id: '1',
@@ -152,7 +166,96 @@ describe('cleanData Functions', () => {
type: 'chat',
},
],
prompts: [],
});
});
});
describe('cleaning v4 data', () => {
it('should return the latest format', () => {
const data = {
version: 4,
history: [
{
id: '1',
name: 'conversation 1',
messages: [
{
role: 'user',
content: "what's up ?",
},
{
role: 'assistant',
content: 'Hi',
},
],
model: OpenAIModels[OpenAIModelID.GPT_3_5],
prompt: DEFAULT_SYSTEM_PROMPT,
folderId: null,
},
],
folders: [
{
id: '1',
name: 'folder 1',
type: 'chat',
},
],
prompts: [
{
id: '1',
name: 'prompt 1',
description: '',
content: '',
model: OpenAIModels[OpenAIModelID.GPT_3_5],
folderId: null,
},
],
} as ExportFormatV4;
const obj = cleanData(data);
expect(isLatestExportFormat(obj)).toBe(true);
expect(obj).toEqual({
version: 4,
history: [
{
id: '1',
name: 'conversation 1',
messages: [
{
role: 'user',
content: "what's up ?",
},
{
role: 'assistant',
content: 'Hi',
},
],
model: OpenAIModels[OpenAIModelID.GPT_3_5],
prompt: DEFAULT_SYSTEM_PROMPT,
folderId: null,
},
],
folders: [
{
id: '1',
name: 'folder 1',
type: 'chat',
},
],
prompts: [
{
id: '1',
name: 'prompt 1',
description: '',
content: '',
model: OpenAIModels[OpenAIModelID.GPT_3_5],
folderId: null,
},
],
});
});
});
});