Publish GraphQL contract from backend
Build and deploy Backend / build (push) Successful in 5m4s

This commit is contained in:
Ruslan Bakiev
2026-06-12 14:47:58 +07:00
parent 24fc6179e3
commit 80a729fa6e
6 changed files with 126 additions and 109 deletions
+2 -108
View File
@@ -1,4 +1,5 @@
import { GraphQLJSONObject } from './scalars.js';
import { typeDefs } from './type-defs.js';
import {
getOrCreateTelegramLoginUser,
getOrCreateTelegramUser,
@@ -23,114 +24,7 @@ export type GraphqlContext = {
mapflowSessionToken?: string;
};
export const schema = /* GraphQL */ `
scalar JSON
enum VoiceExperienceStatus {
UPLOADED
TRANSCRIBING
TRANSCRIBED
ANALYZING
ANALYZED
FAILED
}
type Place {
id: ID!
googlePlaceId: String!
name: String!
latitude: Float!
longitude: Float!
googlePrimaryType: String
googleTypes: [String!]!
experiences: [VoiceExperience!]!
}
type User {
id: ID!
telegramId: String!
username: String
firstName: String
lastName: String
photoUrl: String
languageCode: String
isAdmin: Boolean!
}
type VoiceExperience {
id: ID!
place: Place!
user: User
status: VoiceExperienceStatus!
durationSeconds: Int!
audioObjectKey: String!
transcript: String
analysis: JSON
createdAt: String!
}
input CreateVoiceExperienceInput {
googlePlaceId: String!
googleName: String!
latitude: Float!
longitude: Float!
durationSeconds: Int!
audioObjectKey: String!
audioContentBase64: String!
audioMimeType: String!
}
input NearbyPlacesInput {
latitude: Float!
longitude: Float!
radiusMeters: Int!
}
input AuthenticateTelegramInput {
initData: String!
}
input AuthenticateTelegramLoginInput {
id: Float!
first_name: String
last_name: String
username: String
photo_url: String
auth_date: Float!
hash: String!
}
type AuthPayload {
user: User!
}
type TelegramBotLoginPayload {
token: String!
botUrl: String!
expiresAt: String!
}
type TelegramBotLoginSession {
sessionToken: String!
user: User!
}
type Query {
health: String!
me: User!
places: [Place!]!
nearbyPlaces(input: NearbyPlacesInput!): [Place!]!
voiceExperiences: [VoiceExperience!]!
}
type Mutation {
startTelegramBotLogin: TelegramBotLoginPayload!
completeTelegramBotLogin(token: String!): TelegramBotLoginSession!
authenticateTelegram(input: AuthenticateTelegramInput!): AuthPayload!
authenticateTelegramLogin(input: AuthenticateTelegramLoginInput!): AuthPayload!
createVoiceExperience(input: CreateVoiceExperienceInput!): VoiceExperience!
}
`;
export const schema = typeDefs;
export const resolvers = {
JSON: GraphQLJSONObject,
+108
View File
@@ -0,0 +1,108 @@
export const typeDefs = /* GraphQL */ `
scalar JSON
enum VoiceExperienceStatus {
UPLOADED
TRANSCRIBING
TRANSCRIBED
ANALYZING
ANALYZED
FAILED
}
type Place {
id: ID!
googlePlaceId: String!
name: String!
latitude: Float!
longitude: Float!
googlePrimaryType: String
googleTypes: [String!]!
experiences: [VoiceExperience!]!
}
type User {
id: ID!
telegramId: String!
username: String
firstName: String
lastName: String
photoUrl: String
languageCode: String
isAdmin: Boolean!
}
type VoiceExperience {
id: ID!
place: Place!
user: User
status: VoiceExperienceStatus!
durationSeconds: Int!
audioObjectKey: String!
transcript: String
analysis: JSON
createdAt: String!
}
input CreateVoiceExperienceInput {
googlePlaceId: String!
googleName: String!
latitude: Float!
longitude: Float!
durationSeconds: Int!
audioObjectKey: String!
audioContentBase64: String!
audioMimeType: String!
}
input NearbyPlacesInput {
latitude: Float!
longitude: Float!
radiusMeters: Int!
}
input AuthenticateTelegramInput {
initData: String!
}
input AuthenticateTelegramLoginInput {
id: Float!
first_name: String
last_name: String
username: String
photo_url: String
auth_date: Float!
hash: String!
}
type AuthPayload {
user: User!
}
type TelegramBotLoginPayload {
token: String!
botUrl: String!
expiresAt: String!
}
type TelegramBotLoginSession {
sessionToken: String!
user: User!
}
type Query {
health: String!
me: User!
places: [Place!]!
nearbyPlaces(input: NearbyPlacesInput!): [Place!]!
voiceExperiences: [VoiceExperience!]!
}
type Mutation {
startTelegramBotLogin: TelegramBotLoginPayload!
completeTelegramBotLogin(token: String!): TelegramBotLoginSession!
authenticateTelegram(input: AuthenticateTelegramInput!): AuthPayload!
authenticateTelegramLogin(input: AuthenticateTelegramLoginInput!): AuthPayload!
createVoiceExperience(input: CreateVoiceExperienceInput!): VoiceExperience!
}
`;