将已登录用户的上传图片改成上传文件
Some checks failed
Build / build (push) Failing after 38s

This commit is contained in:
ivamp 2024-09-05 23:55:17 +08:00
parent 1d1cb1120f
commit 1b3d0f9b50
3 changed files with 282 additions and 50 deletions

View File

@ -125,6 +125,8 @@ definitions:
type: string
path:
type: string
size:
type: integer
updated_at:
type: string
url:
@ -1284,11 +1286,11 @@ paths:
summary: 清空聊天记录
tags:
- chat_message
/api/v1/chats/{id}/images:
/api/v1/chats/{id}/files:
post:
consumes:
- application/json
description: 将一个图片添加到聊天记录中
description: 将一个文件添加到聊天记录中
parameters:
- in: path
name: id
@ -1298,9 +1300,9 @@ paths:
name: url
required: true
type: string
- description: 图片
- description: 文件
in: formData
name: image
name: file
type: file
produces:
- application/json
@ -1337,7 +1339,7 @@ paths:
$ref: '#/definitions/schema.ResponseBody'
security:
- ApiKeyAuth: []
summary: 添加图片
summary: 添加文件
tags:
- chat_message
/api/v1/chats/{id}/messages:
@ -1454,6 +1456,54 @@ paths:
summary: 下载文件
tags:
- file
/api/v1/libraries:
get:
consumes:
- application/json
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/schema.ResponseBody'
- properties:
data:
$ref: '#/definitions/entity.Memory'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/schema.ResponseBody'
security:
- ApiKeyAuth: []
summary: 获取所有的资料库
tags:
- libraries
/api/v1/libraries/{id}:
delete:
consumes:
- application/json
parameters:
- in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"204":
description: No Content
"400":
description: Bad Request
schema:
$ref: '#/definitions/schema.ResponseBody'
security:
- ApiKeyAuth: []
summary: 删除资料库
tags:
- memoires
/api/v1/memories:
get:
consumes:

View File

@ -367,50 +367,50 @@ export interface ApiV1ChatPublicPost200Response {
/**
*
* @export
* @interface ApiV1ChatsIdImagesPostRequest
* @interface ApiV1ChatsIdFilesPostRequest
*/
export interface ApiV1ChatsIdImagesPostRequest {
export interface ApiV1ChatsIdFilesPostRequest {
/**
*
* @type {string}
* @memberof ApiV1ChatsIdImagesPostRequest
* @memberof ApiV1ChatsIdFilesPostRequest
*/
'url': string;
/**
*
*
* @type {File}
* @memberof ApiV1ChatsIdImagesPostRequest
* @memberof ApiV1ChatsIdFilesPostRequest
*/
'image'?: File;
'file'?: File;
}
/**
*
* @export
* @interface ApiV1MemoriesGet200Response
* @interface ApiV1LibrariesGet200Response
*/
export interface ApiV1MemoriesGet200Response {
export interface ApiV1LibrariesGet200Response {
/**
*
* @type {EntityMemory}
* @memberof ApiV1MemoriesGet200Response
* @memberof ApiV1LibrariesGet200Response
*/
'data'?: EntityMemory;
/**
*
* @type {string}
* @memberof ApiV1MemoriesGet200Response
* @memberof ApiV1LibrariesGet200Response
*/
'error'?: string;
/**
*
* @type {string}
* @memberof ApiV1MemoriesGet200Response
* @memberof ApiV1LibrariesGet200Response
*/
'message'?: string;
/**
*
* @type {boolean}
* @memberof ApiV1MemoriesGet200Response
* @memberof ApiV1LibrariesGet200Response
*/
'success'?: boolean;
}
@ -848,6 +848,12 @@ export interface EntityFile {
* @memberof EntityFile
*/
'path'?: string;
/**
*
* @type {number}
* @memberof EntityFile
*/
'size'?: number;
/**
*
* @type {string}
@ -2914,19 +2920,19 @@ export const ChatMessageApiAxiosParamCreator = function (configuration?: Configu
};
},
/**
*
* @summary
*
* @summary
* @param {number} id
* @param {ApiV1ChatsIdImagesPostRequest} apiV1ChatsIdImagesPostRequest
* @param {ApiV1ChatsIdFilesPostRequest} apiV1ChatsIdFilesPostRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiV1ChatsIdImagesPost: async (id: number, apiV1ChatsIdImagesPostRequest: ApiV1ChatsIdImagesPostRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
apiV1ChatsIdFilesPost: async (id: number, apiV1ChatsIdFilesPostRequest: ApiV1ChatsIdFilesPostRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'id' is not null or undefined
assertParamExists('apiV1ChatsIdImagesPost', 'id', id)
// verify required parameter 'apiV1ChatsIdImagesPostRequest' is not null or undefined
assertParamExists('apiV1ChatsIdImagesPost', 'apiV1ChatsIdImagesPostRequest', apiV1ChatsIdImagesPostRequest)
const localVarPath = `/api/v1/chats/{id}/images`
assertParamExists('apiV1ChatsIdFilesPost', 'id', id)
// verify required parameter 'apiV1ChatsIdFilesPostRequest' is not null or undefined
assertParamExists('apiV1ChatsIdFilesPost', 'apiV1ChatsIdFilesPostRequest', apiV1ChatsIdFilesPostRequest)
const localVarPath = `/api/v1/chats/{id}/files`
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@ -2949,7 +2955,7 @@ export const ChatMessageApiAxiosParamCreator = function (configuration?: Configu
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
localVarRequestOptions.data = serializeDataIfNeeded(apiV1ChatsIdImagesPostRequest, localVarRequestOptions, configuration)
localVarRequestOptions.data = serializeDataIfNeeded(apiV1ChatsIdFilesPostRequest, localVarRequestOptions, configuration)
return {
url: toPathString(localVarUrlObj),
@ -3099,17 +3105,17 @@ export const ChatMessageApiFp = function(configuration?: Configuration) {
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary
*
* @summary
* @param {number} id
* @param {ApiV1ChatsIdImagesPostRequest} apiV1ChatsIdImagesPostRequest
* @param {ApiV1ChatsIdFilesPostRequest} apiV1ChatsIdFilesPostRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiV1ChatsIdImagesPost(id: number, apiV1ChatsIdImagesPostRequest: ApiV1ChatsIdImagesPostRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApiV1ChatPublicChatIdImagesPost200Response>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.apiV1ChatsIdImagesPost(id, apiV1ChatsIdImagesPostRequest, options);
async apiV1ChatsIdFilesPost(id: number, apiV1ChatsIdFilesPostRequest: ApiV1ChatsIdFilesPostRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApiV1ChatPublicChatIdImagesPost200Response>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.apiV1ChatsIdFilesPost(id, apiV1ChatsIdFilesPostRequest, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['ChatMessageApi.apiV1ChatsIdImagesPost']?.[localVarOperationServerIndex]?.url;
const localVarOperationServerBasePath = operationServerMap['ChatMessageApi.apiV1ChatsIdFilesPost']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
@ -3174,15 +3180,15 @@ export const ChatMessageApiFactory = function (configuration?: Configuration, ba
return localVarFp.apiV1ChatsIdClearPost(id, options).then((request) => request(axios, basePath));
},
/**
*
* @summary
*
* @summary
* @param {number} id
* @param {ApiV1ChatsIdImagesPostRequest} apiV1ChatsIdImagesPostRequest
* @param {ApiV1ChatsIdFilesPostRequest} apiV1ChatsIdFilesPostRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiV1ChatsIdImagesPost(id: number, apiV1ChatsIdImagesPostRequest: ApiV1ChatsIdImagesPostRequest, options?: any): AxiosPromise<ApiV1ChatPublicChatIdImagesPost200Response> {
return localVarFp.apiV1ChatsIdImagesPost(id, apiV1ChatsIdImagesPostRequest, options).then((request) => request(axios, basePath));
apiV1ChatsIdFilesPost(id: number, apiV1ChatsIdFilesPostRequest: ApiV1ChatsIdFilesPostRequest, options?: any): AxiosPromise<ApiV1ChatPublicChatIdImagesPost200Response> {
return localVarFp.apiV1ChatsIdFilesPost(id, apiV1ChatsIdFilesPostRequest, options).then((request) => request(axios, basePath));
},
/**
* get string by ID
@ -3239,16 +3245,16 @@ export class ChatMessageApi extends BaseAPI {
}
/**
*
* @summary
*
* @summary
* @param {number} id
* @param {ApiV1ChatsIdImagesPostRequest} apiV1ChatsIdImagesPostRequest
* @param {ApiV1ChatsIdFilesPostRequest} apiV1ChatsIdFilesPostRequest
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof ChatMessageApi
*/
public apiV1ChatsIdImagesPost(id: number, apiV1ChatsIdImagesPostRequest: ApiV1ChatsIdImagesPostRequest, options?: RawAxiosRequestConfig) {
return ChatMessageApiFp(this.configuration).apiV1ChatsIdImagesPost(id, apiV1ChatsIdImagesPostRequest, options).then((request) => request(this.axios, this.basePath));
public apiV1ChatsIdFilesPost(id: number, apiV1ChatsIdFilesPostRequest: ApiV1ChatsIdFilesPostRequest, options?: RawAxiosRequestConfig) {
return ChatMessageApiFp(this.configuration).apiV1ChatsIdFilesPost(id, apiV1ChatsIdFilesPostRequest, options).then((request) => request(this.axios, this.basePath));
}
/**
@ -3904,12 +3910,153 @@ export class FileApi extends BaseAPI {
/**
* LibrariesApi - axios parameter creator
* @export
*/
export const LibrariesApiAxiosParamCreator = function (configuration?: Configuration) {
return {
/**
*
* @summary
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiV1LibrariesGet: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
const localVarPath = `/api/v1/libraries`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}
const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
// authentication ApiKeyAuth required
await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions,
};
},
}
};
/**
* LibrariesApi - functional programming interface
* @export
*/
export const LibrariesApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = LibrariesApiAxiosParamCreator(configuration)
return {
/**
*
* @summary
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiV1LibrariesGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApiV1LibrariesGet200Response>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.apiV1LibrariesGet(options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['LibrariesApi.apiV1LibrariesGet']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
}
};
/**
* LibrariesApi - factory interface
* @export
*/
export const LibrariesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
const localVarFp = LibrariesApiFp(configuration)
return {
/**
*
* @summary
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiV1LibrariesGet(options?: any): AxiosPromise<ApiV1LibrariesGet200Response> {
return localVarFp.apiV1LibrariesGet(options).then((request) => request(axios, basePath));
},
};
};
/**
* LibrariesApi - object-oriented interface
* @export
* @class LibrariesApi
* @extends {BaseAPI}
*/
export class LibrariesApi extends BaseAPI {
/**
*
* @summary
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof LibrariesApi
*/
public apiV1LibrariesGet(options?: RawAxiosRequestConfig) {
return LibrariesApiFp(this.configuration).apiV1LibrariesGet(options).then((request) => request(this.axios, this.basePath));
}
}
/**
* MemoiresApi - axios parameter creator
* @export
*/
export const MemoiresApiAxiosParamCreator = function (configuration?: Configuration) {
return {
/**
*
* @summary
* @param {number} id
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiV1LibrariesIdDelete: async (id: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'id' is not null or undefined
assertParamExists('apiV1LibrariesIdDelete', 'id', id)
const localVarPath = `/api/v1/libraries/{id}`
.replace(`{${"id"}}`, encodeURIComponent(String(id)));
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}
const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;
// authentication ApiKeyAuth required
await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions,
};
},
/**
*
* @summary
@ -4023,13 +4170,26 @@ export const MemoiresApiAxiosParamCreator = function (configuration?: Configurat
export const MemoiresApiFp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = MemoiresApiAxiosParamCreator(configuration)
return {
/**
*
* @summary
* @param {number} id
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiV1LibrariesIdDelete(id: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.apiV1LibrariesIdDelete(id, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['MemoiresApi.apiV1LibrariesIdDelete']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
/**
*
* @summary
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async apiV1MemoriesGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApiV1MemoriesGet200Response>> {
async apiV1MemoriesGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApiV1LibrariesGet200Response>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.apiV1MemoriesGet(options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['MemoiresApi.apiV1MemoriesGet']?.[localVarOperationServerIndex]?.url;
@ -4070,13 +4230,23 @@ export const MemoiresApiFp = function(configuration?: Configuration) {
export const MemoiresApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
const localVarFp = MemoiresApiFp(configuration)
return {
/**
*
* @summary
* @param {number} id
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiV1LibrariesIdDelete(id: number, options?: any): AxiosPromise<void> {
return localVarFp.apiV1LibrariesIdDelete(id, options).then((request) => request(axios, basePath));
},
/**
*
* @summary
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
apiV1MemoriesGet(options?: any): AxiosPromise<ApiV1MemoriesGet200Response> {
apiV1MemoriesGet(options?: any): AxiosPromise<ApiV1LibrariesGet200Response> {
return localVarFp.apiV1MemoriesGet(options).then((request) => request(axios, basePath));
},
/**
@ -4108,6 +4278,18 @@ export const MemoiresApiFactory = function (configuration?: Configuration, baseP
* @extends {BaseAPI}
*/
export class MemoiresApi extends BaseAPI {
/**
*
* @summary
* @param {number} id
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof MemoiresApi
*/
public apiV1LibrariesIdDelete(id: number, options?: RawAxiosRequestConfig) {
return MemoiresApiFp(this.configuration).apiV1LibrariesIdDelete(id, options).then((request) => request(this.axios, this.basePath));
}
/**
*
* @summary

View File

@ -74,15 +74,15 @@
label="输入消息"
@keyup.enter="sendMessage"
></v-text-field>
<v-file-input v-model="fileUpload" label="选择图片"></v-file-input>
<v-file-input v-model="fileUpload" label="选择文件"></v-file-input>
<v-btn color="primary" @click="sendMessage">发送</v-btn>
<v-btn
class="ml-2"
color="primary"
:loading="uploading"
@click="uploadImage"
>上传图片</v-btn
@click="uploadFile"
>上传文件</v-btn
>
<v-btn class="ml-2" color="primary" @click="clearMessages">清空</v-btn>
@ -278,16 +278,16 @@ const deleteChat = () => {
});
};
const uploadImage = () => {
const uploadFile = () => {
if (!fileUpload.value) {
return;
}
uploading.value = true;
api.ChatMessage.apiV1ChatsIdImagesPost(
api.ChatMessage.apiV1ChatsIdFilesPost(
chatId,
{
image: fileUpload.value,
file: fileUpload.value,
url: "",
},
{