Coder Social home page Coder Social logo

arfs-store's People

Contributors

thiagocarvalhodev avatar

Stargazers

 avatar  avatar

Watchers

 avatar

arfs-store's Issues

Define ArfsStore API for v.0.0.1

Sets the ArioStore API for v.0.0.1

For the basics operations covered in #2 :

ArioStore API

- List<EntityMetadata> getEntitiesFromCollection(CollectionSnapshot collection);
- EntitySnapshot getSnapshot(EntityMetadata metadata);
- CollectionSnapshot getCollectionFromSnapshot(EntitySnapshot metadata);
- List<EntityMetadata> getPublicDrives(String owner);

ARFS Navigation features

Overview

ArDrive has basic features to show the ARFS on the UI. This ticket will list the basic features for a first release of this.

Data dependencies for user UX entry points

UI view Data dependencies on the network Steps to retrieve the information
Profile modal Wallet balance Fetch the wallet balance
Personal drives Metadata of the Drives owned by the user’s walletMetadata data of the Drives owned by the user’s wallet GQL for all user’s drive transactionsAt this point, extract unique drive IDs (latest revision metadata Tx ID). So it is possible to display at least the drive ID of each.Request the data of each transaction in parallelAt this point we can display the name
Attached drives Metadata of the attached drives (regardless of the owner)Metadata data of the attached drives Request the metadata data of the attached drives (specified at the DB)At this point it is possible to display the drive IDs before the names are retrievedRequest the data of each transaction in parallelAt this point we are able to display the name
Folder navigation Current block heightDrive ID retrieved at the Personal drivesand Attached drivesFolder metadata dataSub-folder metadata dataFiles metadata dataPaths (All folders metadata data of the parents) PreconditionsThe drive metadata was retrieved at Personal drives or Attached drivesRequest all revisions of all folders within the drive in DESCENDANTorderAs soon as find the first occurence of a folder, that will be the latest revision. The next occurences will be ignored iat this step as those are old revisionsFetch the metadata data in order to get its name (in parallel)As soon as the root folder appears, there is information enough toinstantiate a folder hierarchy of the whole drive
File Navigation Current block heightEntire folder hierarchy of drive must be established (see Folder Navigation above) NOTE: IT IS NEVER SUFFICIENT TO ONLY QUERY FOR FILES BY PARENT FOLDERID IN ARFS, BECAUSE YOU WILL MISS MOVE OPERATIONS! (A FOLLOWUP REQUEST FOR ALL ENTITIES IN THE FOLDER IS NECESSARY!)Perform GQL query(ies) for the entire file entity list belonging to the driveID in DESCENDING ORDER.Proactively identify latest file revisions and issue metadata data requests for unique file IDs (in order to populate file names proactively) (NOTE: Need to see how this impacts GQL performance for multi-page GQL responses).When entire entity list has been processed, it is safe to display files to the user in ANY folder in the drive.NOTE 1: Need something like drive snapshots or historical move records for a drive to do anything more proactively than this.NOTE 2: We have enough info at this point to know what icon to show for the file.NOTE 3: We only have HALF the information we need at this point to show file statuses; we can tell if the metadataTx was confirmed 15 or more blocks prior to the current block. We STILL need the status of the dataTx.
File Statuses of Latest Revisions Current block heightDrive hierarchy (latest revisions of folders and files) NOTE 1: Can do this on-demand and could also make it a background part of the sync process that kicks off at the end for anything that hasn’t already been figured out on demand.In batches of 10, go request height info for all dataTxsCompare returned heights against current block height
File Statuses of Historical Revisions Current block heightDrive hierarchy (latest revisions of folders and ALL revisions of files) NOTE: Can do this on-demand and could also make it a background part of the sync process that kicks off at the end for anything that hasn’t already been figured out on demand.In batches of 10, go request height info for all dataTxsCompare returned heights against current block height
File name File metadata data PreconditionsWait for the file metadata data requested at File navigation
Folder name Folder metadata data PreconditionsWait for the folder metadata data requested at Folder navigation
File info File metadata data PreconditionsWait for the folder metadata data requested at File navigationNOTE: Date created field requires oldest known revision data (which we’d have based on our preconditions).
Folder info Folder metadata dataChildren count PreconditionsWait for the folder metadata data requested at File navigationWait for the folder hierarchy and all the files contained on itNOTE: Date created field requires oldest known revision data (which we’d have based on our preconditions).
File activity All the revisions of the file PreconditionsWait for the transactions requested at the File navigation. Instead of filtering the latest revisions, take all revisions of the target file.
Folder activity All the revisions of the folder PreconditionsWait for the transactions requested at the Folder navigation. Instead of filtering the latest revisions, take all revisions of the target folder.
Folder creation Parent folder IDSibling entities' names (for conflicting names)Wallet balancePrice estimation PreconditionsWait for the whole drive hierarchy to get the last revisions of the folders, and files therein, requested at File navigation.Wait for the metadata data of all children of the target parent folder requested at File navigation in order to get the names for conflict checking.Wait for wallet balance at the Price calculator.
File upload Drive dataParent folder IDMetadata of the siblings (for conflict checking) PreconditionsWait for the whole drive hierarchy to get the last revisions of the folders, and files therein, requested at File navigation.
Drive creation Get wallet balanceGet price estimation PreconditionsWait for the wallet balance requested at the Price calculator
Share File File transaction IDFile Key in the case of private entitites PreconditionsWait for the entity metadata transaction in order to get its ID at Folder navigation
Share Folder Folder transaction IDDrive Key in the case of private entitites PreconditionsWait for the entity metadata transaction in order to get its ID at Folder navigation
Share Drive Drive transaction IDDrive Key in the case of private entitites PreconditionsWait for the entity metadata transaction in order to get its ID at Personal drivesor Attached drives
Export drive contents The whole drive’s metadata data PreconditionsWait for the folder hierarchy of the whole drive requested at Folder navigation.Wait for the metadata data requested at the Folder navigation in order to get the names.
Attach drive N/A N/A
File rename File metadataMetadata data of the siblings (for conflict checking) PreconditionsWait for the file metadata requested at the Folder navigationWait for the siblings metadata data requested at Folder navigation in order to get the names
Folder rename Folder metadataMetadata data of the siblings (for conflict checking) PreconditionsWait for the folder metadata requested at the Folder navigationWait for the siblings metadata data requested at Folder navigation in order to get the names
Drive rename Drive metadata PreconditionsWait for the file metadata requested at the Folder navigation
Move File The whole folder hierarchy of the drive (to choose the destination, and for conflict checking) PreconditionsWait for the whole file hierarchy of the drive requested at Folder navigation
Move Folder The whole folder hierarchy of the drive (to choose the destination, and for conflict checking) PreconditionsWait for the whole file hierarchy of the drive requested at Folder navigation
Ghost fixer The whole folder hierarchy PreconditionsWait for the whole file hierarchy of the drive requested at Folder navigation
Manifest creation The whole folder hierarchy PreconditionsWait for the whole file hierarchy of the drive requested at Folder navigation
Sync button TBD TBD

Define basic operations v.0.0.1

Define the basic operations of ArioStore.

For it, we'll use as a parameter basics features of the ArDrive and define those operations needed for the first version.

v0.0.1 features:

  • ✅ Get personal drives (only public)
  • ✅ Folder navigation: top to bottom

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.