| import mongoose, { Schema, Document, Types } from 'mongoose'; |
|
|
| |
| export interface ITransaction extends Document { |
| user: Types.ObjectId; |
| conversationId?: string; |
| tokenType: 'prompt' | 'completion' | 'credits'; |
| model?: string; |
| context?: string; |
| valueKey?: string; |
| rate?: number; |
| rawAmount?: number; |
| tokenValue?: number; |
| inputTokens?: number; |
| writeTokens?: number; |
| readTokens?: number; |
| createdAt?: Date; |
| updatedAt?: Date; |
| } |
|
|
| const transactionSchema: Schema<ITransaction> = new Schema( |
| { |
| user: { |
| type: mongoose.Schema.Types.ObjectId, |
| ref: 'User', |
| index: true, |
| required: true, |
| }, |
| conversationId: { |
| type: String, |
| ref: 'Conversation', |
| index: true, |
| }, |
| tokenType: { |
| type: String, |
| enum: ['prompt', 'completion', 'credits'], |
| required: true, |
| }, |
| model: { |
| type: String, |
| }, |
| context: { |
| type: String, |
| }, |
| valueKey: { |
| type: String, |
| }, |
| rate: Number, |
| rawAmount: Number, |
| tokenValue: Number, |
| inputTokens: { type: Number }, |
| writeTokens: { type: Number }, |
| readTokens: { type: Number }, |
| }, |
| { |
| timestamps: true, |
| }, |
| ); |
|
|
| export default transactionSchema; |
|
|