import { injectable } from "inversify"; import { IJsonApiResponse, IJsonApiResource, IJsonApiRelationship, } from "../../interfaces"; export const userType = "user"; export interface ISocialAccount { id: string; name: string; } export interface ISocialAttributes { social_network: string; profile_url: string; } export interface ISocialAccountResource extends IJsonApiResource {} export interface ICurrentLocation { id: string; name: string; place_type: string; } export interface IUserAttributes { private_fields?: string; website?: string; username?: string; name?: string; updated_at?: string; created_at?: string; next_trip?: string; nationality?: string; last_trip?: string; last_name?: string; languages?: string; gender?: string; first_name?: string; email_verified?: boolean; avatar?: string; ask_me_about?: string; about_me?: string; email?: string; unconfirmed_email?: string; } export interface IUserRelationships { "social-accounts": IJsonApiRelationship; "current-location": IJsonApiRelationship; "associated-roles": IJsonApiRelationship; "associated-badges": IJsonApiRelationship; } export interface IUserResource extends IJsonApiResource {} export interface IUserResponse extends IJsonApiResponse {} // export interface IUserSResponse extends IJsonApiCollection {} export interface IUser { id?: string; website?: string; username?: string; name?: string; updatedAt?: string; createdAt?: string; nextTrip?: string; nationality?: string; lastTrip?: string; lastName?: string; languages?: string; gender?: string; firstName?: string; emailVerified?: boolean; avatar?: string; description?: string; aboutMe?: string; email?: string; currentLocation?: ICurrentLocation; unconfirmedEmail?: string; socialAccounts?: ISocialAccount[]; type?: string; } @injectable() export default class User implements IUser { id: string; website: string; username: string; name: string; updatedAt: string; createdAt: string; nextTrip: string; nationality: string; lastTrip: string; lastName: string; languages: string; gender: string; firstName: string; emailVerified: boolean; avatar: string; description: string; aboutMe: string; email: string; currentLocation: ICurrentLocation; unconfirmedEmail?: string; socialAccounts?: ISocialAccount[]; type: string = userType; }