import { RxCollection, RxDocument, RxJsonSchema } from 'rxdb' import { MetaverseLightwalletDatabase } from './database' import { Observable } from 'rxjs' import { map } from 'rxjs/operators' export interface Address { address: string path: string } export async function initAddressCollection(database: MetaverseLightwalletDatabase): Promise { const addressCollection = await database.collection({ name: 'addresses', schema: addressSchema, methods: {}, statics: addressCollectionMethods, }) return addressCollection } export type AddressDocMethods = {} export type AddressDocument = RxDocument export type AddressCollection = RxCollection export type AddressCollectionMethods = { addresses$: () => Observable } export const addressCollectionMethods: AddressCollectionMethods = { addresses$: function (this: AddressCollection) { return this.find().$.pipe(map(addresses => { return addresses.map(address => address.get('address')) })) } } export const addressSchema: RxJsonSchema
= { title: 'address', version: 0, description: 'Metaverse Addresses', type: 'object', properties: { address: { type: 'string', primary: true, }, path: { "type": "string", }, }, }