[{"data":1,"prerenderedAt":311},["ShallowReactive",2],{"project-18929742":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":43,"post_text":45,"what":46,"said":74,"maker_in_thread":161,"shape":171,"grid":176,"attempts":268,"same_week":273,"maker_shows":44,"maker_hidden":303,"reader_version":304,"card":305},"18929742","Json2graphql","From a JSON file to Postgres-backed realtime GraphQL","title","Show HN: Json2graphql – From a JSON file to Postgres-backed realtime GraphQL","https:\u002F\u002Fgithub.com\u002Fhasura\u002Fgraphql-engine\u002Ftree\u002Fmaster\u002Fcommunity\u002Ftools\u002Fjson2graphql","github.com","wawhal",1547721292,2019,120,40,383,2195,18,"notable","infrastructure","graphql api generator","cli",[24,25,26,27,28],"graphql","postgres","hasura","json","realtime api","curious",0.012,{"positive":32,"neutral":33,"mixed":34,"critical":35},2,11,1,3,17,{"idea":38,"execution":40,"docs":41,"performance":42},{"positive":34,"critical":39},0,{"positive":39,"critical":39},{"positive":39,"critical":39},{"positive":39,"critical":39},[44,39,44,35,34,39,34,39,39,39,39,39,34,39,39,39,39,39,39,39,35,35,35,39,35,39,39,39,39,39,39,39,35,39,35,35,35,35,35,35],5,null,{"problem":47,"audience":45,"pricing":45,"motivation":45,"time_to_build":45,"stack":53,"openness":72,"stage":73,"team_size":73},{"value":48,"source":49,"evidence":50},"Creating a GraphQL API backed by Postgres from a JSON file","inferred",[51],{"id":52},"post",[54,61,68],{"value":55,"source":49,"evidence":56},"Postgres",[57],{"id":58,"by":59,"text":60},"18931008","tango12","(I'm from Hasura) Well, today it is fairly dependent on postgres, but we can add more SQL backends eventually. We also leverage some neat Postgres performance tricks which would…",{"value":62,"source":63,"evidence":64},"Hasura","maker",[65],{"id":66,"by":11,"text":67},"18931217","No. The tool also creates relationships based on foreign key references using Hasura. So to query all the users with the child users, you would make a GraphQL query like: ```…",{"value":69,"source":49,"evidence":70},"GraphQL",[71],{"id":52},"open_source","unknown",{"praise":75,"objections":91,"requests":106,"questions":118,"alternatives":144},[76,84],{"value":77,"source":78,"evidence":79},"Hasura is a productivity boon","commenter",[80],{"id":81,"by":82,"text":83},"18932004","cpursley","Hasura is a boon to productivity and keeps gaining very useful features. I really wish they had a hosted version (like netlify); I don't want to manage servers.",{"value":85,"source":78,"evidence":86},"Tools like Hasura get out of the way and use native Postgres features",[87],{"id":88,"by":89,"text":90},"18934611","michelpp","I've tried Hasura and really liked it, but there were a few quirks that led me to another tool, but in general, the whole idea that tools like Hasura, PostgREST, pREST and…",[92],{"value":93,"source":78,"evidence":94},"AGPL license is too risky for enterprise use",[95,99,103],{"id":96,"by":97,"text":98},"18930186","jacques_chester","I was excited to see graphql-engine, but unfortunately the AGPL is a bit hard to pitch to folks in an enterprise software context.",{"id":100,"by":101,"text":102},"18930553","yodon","AGPL is pretty much a non-starter for us. It's simply viewed as too risky a license. Thanks to jacues_chester for pointing out the license. The project sounds super cool but…",{"id":104,"by":97,"text":105},"18936182","I was interested in whether it could be used in Concourse, which is Apache 2 licensed. I wanted a better way to extract data without adding lots of new endpoints. AGPL just…",[107,114],{"value":108,"source":78,"evidence":109},"MySQL support",[110],{"id":111,"by":112,"text":113},"18932494","billbrown","I'm exploring GraphQL for a legacy MySQL database right now and the only option I can see is based on Sequelize, which we don't use. I'd love MySQL support!",{"value":115,"source":78,"evidence":116},"Hosted version",[117],{"id":81,"by":82,"text":83},[119,130,137],{"value":120,"source":78,"evidence":121},"How are circular references handled",[122,126],{"id":123,"by":124,"text":125},"18930672","priansh","This is awesome but how do you deal with circular references?",{"id":127,"by":128,"text":129},"18931125","chrisseaton","But then to go from user 456 to user 123 via the field user_id do I have to do a linear search of all users to check their IDs?",{"value":131,"source":78,"evidence":132},"How does realtime work with Postgres",[133],{"id":134,"by":135,"text":136},"18932805","marknadal","For other related automatic GraphQL tools that create realtime subscriptions to queries, check out https:\u002F\u002Fgithub.com\u002Fbrysgo\u002Fgraphql-gun I'm curious though, with Postgres, how…",{"value":138,"source":78,"evidence":139},"Is access control supported",[140],{"id":141,"by":142,"text":143},"18931477","maratd","Is there some way to make data available to specific users, but unavailable to others? Basically enforcing an ACL or similar?",[145,149,153,157],{"value":62,"source":78,"evidence":146},[147,148],{"id":88,"by":89,"text":90},{"id":81,"by":82,"text":83},{"value":150,"source":78,"evidence":151},"PostGraphile",[152],{"id":88,"by":89,"text":90},{"value":154,"source":78,"evidence":155},"PostgREST",[156],{"id":88,"by":89,"text":90},{"value":158,"source":78,"evidence":159},"graphql-gun",[160],{"id":134,"by":135,"text":136},{"comments":162,"answered":162,"key":163},4,[164,167,168],{"id":165,"text":166},"18930821","It works with circular references. For example, this works: ``` { \"user\": [ { \"id\": 456, \"name\": \"Sita K\", \"user_id\": 123 }, { \"id\": 123, \"name\": \"John Doe\", \"user_id\": 123 } ] }…",{"id":66,"text":67},{"id":169,"text":170},"18937955","I am sorry, but if possible, could you elaborate @chrisseaton? (preferably with a bit more punctuation :D)",{"commenters":172,"max_depth":173,"maker_replies":162,"first_comment_mins":174,"lifespan_hours":175},25,8,106,27,[177,179,183,185,188,190,192,193,196,199,202,205,208,209,212,215,217,219,223,225,227,229,232,233,235,237,238,240,243,245,248,249,251,254,256,257,261,262,263,265],[88,39,44,178,89,39],"project\u002Fpositive\u002Fidea",[180,39,39,181,182,39],"18937248","commenter\u002Fneutral\u002Fnone","ruslan_talpa",[81,34,44,184,82,39],"project\u002Fpositive\u002Fnone",[186,34,35,187,82,39],"18933466","project\u002Fmixed\u002Fexecution",[96,32,34,189,97,39],"project\u002Fcritical\u002Fnone",[191,32,39,181,59,39],"18930432",[100,32,34,189,101,39],[194,32,39,181,195,39],"18930697","quietbritishjim",[197,32,39,181,198,39],"18930937","JeremyBanks",[200,32,39,181,201,39],"18930952","ensignavenger",[203,32,39,181,204,39],"18931927","noghostartifact",[206,32,39,181,207,39],"18930863","tyingq",[104,32,34,189,97,39],[210,32,39,181,211,39],"18930960","thanatropism",[213,32,39,181,214,39],"18931095","nothrabannosir",[216,32,39,181,211,39],"18931907",[218,32,39,181,214,39],"18932310",[220,32,39,221,222,39],"18934472","other\u002Fneutral\u002Fnone","s3m4j",[224,32,39,181,214,39],"18932139",[226,32,39,181,97,39],"18936202",[141,35,35,228,142,39],"project\u002Fneutral\u002Fnone",[230,35,35,231,59,39],"18931580","project\u002Fneutral\u002Fdocs",[123,162,35,228,124,39],[165,162,39,234,11,34],"maker\u002Fneutral\u002Fnone",[127,162,35,236,128,39],"project\u002Fneutral\u002Fperformance",[66,162,39,234,11,34],[239,162,39,181,128,39],"18931455",[241,162,39,181,242,39],"18932643","general8bitso",[244,162,39,181,128,39],"18933185",[246,162,39,181,247,39],"18933694","stevekemp",[169,162,39,181,11,34],[250,162,39,181,128,39],"18939263",[252,162,35,228,253,39],"18935524","pmarreck",[255,162,39,228,11,34],"18936652",[134,44,35,228,135,39],[258,259,35,228,260,39],"18930888",6,"dksidana",[58,259,35,228,59,39],[111,259,35,228,112,39],[264,259,35,228,59,39],"18932615",[266,259,35,228,267,39],"18933980","sambroner",[269,272],{"id":270,"t":271,"points":35,"comments":39},"18910508",1547553167,{"id":4,"t":12,"points":14,"comments":15},[274,279,284,289,294,299],{"id":275,"name":276,"points":277,"category":278},"18975189","Simple Opt Out",233,"security_privacy",{"id":280,"name":281,"points":282,"category":283},"18965729","2read",198,"productivity",{"id":285,"name":286,"points":287,"category":288},"18939145","indigo-player",151,"creative",{"id":290,"name":291,"points":292,"category":293},"18940407","Musish",141,"consumer_social",{"id":295,"name":296,"points":297,"category":298},"18967693","Esy",134,"dev_tools",{"id":300,"name":301,"points":302,"category":298},"18954890","mini-async-log",131,false,"v2",{"id":306,"name":5,"line":6,"ai":303,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":307,"top":18,"kw":308,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":309,"url":9,"mix":310,"praise":77,"objection":93,"sub":21},18929742,0.01,[24,25,26,27,28],"5053101000001000000033303000000030333333",[32,33,34,35],1794036574050]