[{"data":1,"prerenderedAt":529},["ShallowReactive",2],{"project-24363493":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":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":78,"maker_in_thread":161,"shape":171,"grid":175,"attempts":490,"same_week":491,"maker_shows":33,"maker_hidden":521,"reader_version":522,"card":523},"24363493","kiss-orm","ORM for TypeScript with no query-builder, supporting full SQL queries","title","Show HN: ORM for TypeScript with no query-builder, supporting full SQL queries","https:\u002F\u002Fgithub.com\u002FSeb-C\u002Fkiss-orm","github.com","Seb-C",1599137409,2020,220,119,234,3028,8,"notable","languages","orm library","library",[24,25,26,27,28],"typescript orm","raw sql","tagged template","postgres","repository pattern","mixed",0.048,{"positive":18,"neutral":32,"mixed":33,"critical":34},10,1,5,24,{"idea":37,"execution":39,"docs":41,"design":42,"performance":44},{"positive":34,"critical":38},4,{"positive":33,"critical":40},0,{"positive":40,"critical":40},{"positive":43,"critical":40},2,{"positive":40,"critical":33},[33,46,34,46,46,46,40,33,46,34,40,40,34,46,40,40,40,40,40,46,46,40,40,40,34,40,33,34,34,40,40,46,40,40,40,40,40,46,40,40],3,null,{"problem":49,"audience":47,"pricing":47,"motivation":56,"time_to_build":47,"stack":60,"openness":76,"stage":77,"team_size":77},{"value":50,"source":51,"evidence":52},"ORMs are bloated and overcomplicated; maker wants proper SQL without query-building abstraction","maker",[53],{"id":54,"by":11,"text":55},"24363494","For a long time, I have been frustrated with the state-of-the-art about the existing ORMs. I like things to be simple, but somehow all ORMs seems to be bloated and overcomplicate…",{"value":57,"source":51,"evidence":58},"Frustration with existing ORMs being bloated; wanted simpler design preserving full SQL",[59],{"id":54,"by":11,"text":55},[61,69],{"value":62,"source":63,"evidence":64},"TypeScript","commenter",[65],{"id":66,"by":67,"text":68},"24364189","CoffeeDregs","``` sql\"SOME SQL\"; ``` This looks to be a \"tagged template\": https:\u002F\u002Fbasarat.gitbook.io\u002Ftypescript\u002Ffuture-javascript\u002Ftemplate-strings. I'm a TS user but hadn't seen that feature…",{"value":70,"source":63,"evidence":71},"PostgreSQL",[72],{"id":73,"by":74,"text":75},"24365739","LorenzA","the template syntax reminds me of an other postgres libary https:\u002F\u002Fgithub.com\u002Fporsager\u002Fpostgres","open_source","unknown",{"praise":79,"objections":99,"requests":121,"questions":130,"alternatives":137},[80,95],{"value":81,"source":63,"evidence":82},"Clean, simple approach keeping full SQL power",[83,87,91],{"id":84,"by":85,"text":86},"24364486","holgerw","Thank you for creating Kiss ORM. I have even created a HackerNews account to be able to comment on it. I have been searching for this type of ORM in Typescript for a while. I…",{"id":88,"by":89,"text":90},"24364318","gigatexal","As a never-ORM guy I really like what this is trying to do. It seems like the best of both worlds. Kudos!",{"id":92,"by":93,"text":94},"24363981","golergka","Love to see more options in this space! I've made a switch from traditional ORM (TypeORM and Sequelize) to a similar \"light ORM\", Pgtyped, and never looked back since. Like in…",{"value":96,"source":63,"evidence":97},"Tagged template safe from injection",[98],{"id":66,"by":67,"text":68},[100,107,114],{"value":101,"source":63,"evidence":102},"Lacks eager loading, causing N+1 queries for relationships",[103],{"id":104,"by":105,"text":106},"24364593","Dragory","It seems you cannot load relationships for a collection of entities easily without N+1 queries, unless I'm missing something. Based on the many-to-many section of the docs…",{"value":108,"source":63,"evidence":109},"Not really an ORM, more a safe query serializer",[110],{"id":111,"by":112,"text":113},"24364690","nhumrich","I actually built something almost exactly like this internally. This is awesome. But, its a far cry to call this an ORM. Its just a safe query serializer. ORM takes an object and…",{"value":115,"source":63,"evidence":116},"No migration support out of the box",[117],{"id":118,"by":119,"text":120},"24363853","midrus","All these things fall short the moment you need real \"production\" features, such as reliable migrations (writing them by hand? no thanks. Outsourcing to another library like…",[122,126],{"value":123,"source":63,"evidence":124},"Eager loading of relationships",[125],{"id":104,"by":105,"text":106},{"value":127,"source":63,"evidence":128},"Changeset-style validation like Ecto",[129],{"id":84,"by":85,"text":86},[131],{"value":132,"source":51,"evidence":133},"How migrations handle column renames and type changes without data loss",[134],{"id":135,"by":11,"text":136},"24370052","Thanks. I do not have experience with Room, but I usually prefer to control and know what is happening in my schema. For example, if your schema is automatically handled, how do…",[138,142,149,153,157],{"value":139,"source":63,"evidence":140},"Prisma",[141],{"id":118,"by":119,"text":120},{"value":143,"source":63,"evidence":144},"Knex \u002F Objection.js",[145],{"id":146,"by":147,"text":148},"24365574","wayneftw","I started using Objection.js and Knex last year and I think it might be the best ORM I've used on any platform. There's no way I'm going back to writing raw queries. If I did…",{"value":150,"source":63,"evidence":151},"Pgtyped",[152],{"id":92,"by":93,"text":94},{"value":154,"source":63,"evidence":155},"Ecto (Elixir)",[156],{"id":84,"by":85,"text":86},{"value":158,"source":63,"evidence":159},"postgres.js library",[160],{"id":73,"by":74,"text":75},{"comments":162,"answered":34,"key":163},14,[164,165,168],{"id":54,"text":55},{"id":166,"text":167},"24364070","Thanks! It was a bit tricky to solve the transactions problem, because I did not want to abstract the BEGIN \u002F COMMIT \u002F ROLLBACK instructions, but at the same time I needed to…",{"id":169,"text":170},"24364142","That is something I seriously considered, but I just did not want to bother with multiple packages and repositories, especially for a repository class that is about 150 lines of…",{"commenters":172,"max_depth":173,"maker_replies":162,"first_comment_mins":40,"lifespan_hours":174},72,7,303,[176,178,182,186,190,193,197,200,203,205,207,210,212,215,217,220,222,225,227,229,232,235,238,241,245,248,252,255,257,260,263,267,270,271,273,276,279,282,283,286,288,292,294,297,299,302,305,307,309,311,314,316,319,321,324,326,328,330,332,335,337,340,342,345,348,350,352,354,357,360,362,365,369,372,375,378,381,383,386,388,390,393,395,397,398,400,402,404,405,408,409,413,416,418,421,423,426,429,433,436,439,442,445,448,451,453,456,459,461,464,468,470,472,474,475,479,483,485,487],[54,40,40,177,11,33],"project\u002Fpositive\u002Fidea",[179,40,33,180,181,40],"24363784","project\u002Fcritical\u002Fidea","waheoo",[183,40,40,184,185,40],"24363841","commenter\u002Fneutral\u002Fnone","twodave",[187,40,46,188,189,40],"24365864","project\u002Fneutral\u002Fidea","lemontruth",[191,40,46,188,192,40],"24366454","RandoHolmes",[194,40,40,195,196,40],"24369265","other\u002Fneutral\u002Fnone","electrum",[198,40,40,195,199,40],"24369478","EdwardDiego",[201,40,34,202,185,40],"24363798","project\u002Fpositive\u002Fexecution",[166,40,40,204,11,33],"maker\u002Fneutral\u002Fexecution",[206,40,46,188,185,40],"24370505",[208,40,40,195,209,40],"24363831","arethuza",[211,40,46,188,185,40],"24363850",[213,40,46,188,214,40],"24363923","exevp",[169,40,40,216,11,33],"maker\u002Fneutral\u002Fidea",[218,40,33,180,219,40],"24364215","__ryan__",[221,40,34,177,214,40],"24363889",[223,40,40,184,224,40],"24364130","areactnativedev",[226,40,40,184,214,40],"24364208",[228,40,40,216,11,33],"24364237",[230,40,40,231,214,40],"24364378","commenter\u002Fneutral\u002Fidea",[233,40,33,180,234,40],"24364415","baumandm",[236,40,40,184,237,40],"24364528","slooonz",[239,40,40,195,240,40],"24365503","Jarwain",[242,40,46,243,244,40],"24363927","project\u002Fmixed\u002Fdocs","marius_k",[246,40,40,247,11,33],"24364178","maker\u002Fneutral\u002Fdocs",[249,40,40,250,251,40],"24365111","other\u002Fneutral\u002Fidea","gmac",[253,40,34,177,254,40],"24366556","intellix",[256,40,40,195,251,40],"24373321",[258,40,40,195,259,40],"24367867","skrebbel",[261,40,40,262,251,40],"24369463","other\u002Fneutral\u002Fdocs",[264,40,40,265,266,40],"24371212","other\u002Fpositive\u002Fnone","ummonk",[268,40,40,250,269,40],"24365313","mqus",[135,40,40,216,11,33],[272,40,40,195,269,40],"24373407",[274,40,40,195,275,40],"24365839","axlee",[277,40,34,177,278,40],"24369494","Juliennng",[280,40,40,195,281,40],"24369828","thunderbong",[118,33,40,195,119,40],[284,33,40,195,285,40],"24363879","bradstewart",[287,33,40,216,11,33],"24364011",[289,33,46,290,291,40],"24364113","maker\u002Fneutral\u002Fnone","bakedbeanz",[293,33,40,216,11,33],"24364331",[295,33,40,195,296,40],"24364016","nicoburns",[298,33,40,184,119,40],"24364223",[300,33,40,184,301,40],"24364433","dgellow",[303,33,40,184,304,40],"24364644","peburrows",[306,33,40,184,296,40],"24364715",[308,33,40,184,301,40],"24365274",[310,33,40,184,119,40],"24364775",[312,33,40,184,313,40],"24365130","gnud",[315,33,40,184,301,40],"24365266",[317,33,40,184,318,40],"24364746","williamdclt",[320,33,40,184,301,40],"24364390",[322,33,40,195,323,40],"24364049","string",[325,33,40,184,119,40],"24364283",[327,33,40,184,323,40],"24365116",[329,33,40,184,214,40],"24364088",[331,33,40,184,119,40],"24364254",[333,33,46,334,214,40],"24364436","project\u002Fneutral\u002Fnone",[336,33,40,216,11,33],"24370094",[338,33,46,339,214,40],"24372857","project\u002Fneutral\u002Fdesign",[341,33,40,290,11,33],"24489468",[343,33,40,195,344,40],"24364566","2color",[346,33,40,195,347,40],"24364935","joshmanders",[349,33,40,195,344,40],"24365602",[351,33,40,195,214,40],"24365677",[353,33,40,195,344,40],"24372952",[355,33,40,195,356,40],"24371044","christophilus",[358,33,40,195,359,40],"24364107","dathinab",[361,33,40,195,119,40],"24364299",[363,33,40,195,364,40],"24365217","rubber_duck",[366,33,34,367,368,40],"24364149","project\u002Fpositive\u002Fdesign","xixixao",[370,33,40,195,371,40],"24364201","foepys",[373,33,40,195,374,40],"24364598","nerdkid93",[376,33,40,195,377,40],"24364767","varrock",[379,33,40,195,380,40],"24367612","vosper",[382,33,40,195,374,40],"24368457",[384,33,40,195,385,40],"24368782","aidos",[387,33,40,195,344,40],"24373008",[104,43,33,389,105,40],"project\u002Fcritical\u002Fperformance",[391,43,34,367,392,40],"24365080","WkndTriathlete",[394,43,40,184,105,40],"24370215",[396,43,40,290,11,33],"24371160",[84,46,34,177,85,40],[399,46,46,188,85,40],"24364651",[401,46,40,290,11,33],"24371277",[403,46,40,290,11,33],"24371274",[92,38,40,195,93,40],[406,38,40,195,407,40],"24364141","davecardwell",[146,34,40,195,147,40],[410,411,40,195,412,40],"24364356",6,"timmy-turner",[414,411,40,195,415,40],"24378681","hv42",[66,173,46,417,67,40],"project\u002Fneutral\u002Fexecution",[419,173,40,195,420,40],"24364238","lucideer",[422,173,40,195,214,40],"24364240",[424,173,40,195,425,40],"24364592","marton78",[427,18,40,195,428,40],"24364946","blaufast",[430,431,40,195,432,40],"24365738",9,"ryanmarsh",[434,32,40,195,435,40],"24363689","capnorange",[437,32,40,195,438,40],"24363744","racedude",[440,32,40,195,441,40],"24363905","jdauriemma",[443,32,40,195,444,40],"24363994","agustif",[446,32,40,195,447,40],"24365342","benatkin",[449,32,40,195,450,40],"24365977","Thomaschaaf",[452,32,40,195,119,40],"24363834",[454,32,40,195,455,40],"24364386","anaxag0ras",[457,32,40,195,458,40],"24363859","cargoshipit",[460,32,40,195,458,40],"24363864",[462,32,40,195,463,40],"24363975","stephen",[465,466,40,195,467,40],"24364407",11,"haakts",[88,469,34,177,89,40],12,[471,469,40,290,11,33],"24364445",[111,473,33,180,112,40],13,[73,162,40,195,74,40],[476,477,40,195,478,40],"24367150",15,"nesarkvechnep",[480,481,40,195,482,40],"24365635",16,"cryptica",[484,481,40,195,189,40],"24365779",[486,481,40,195,478,40],"24367838",[488,481,40,195,489,40],"24370542","ben509",[],[492,497,502,507,512,517],{"id":493,"name":494,"points":495,"category":496},"24380969","Linux Upskill Challenge",780,"learning_science",{"id":498,"name":499,"points":500,"category":501},"24422432","Mimestream",403,"productivity",{"id":503,"name":504,"points":505,"category":506},"24381700","Talk",310,"consumer_social",{"id":508,"name":509,"points":510,"category":511},"24407706","Titanoboa",279,"dev_tools",{"id":513,"name":514,"points":515,"category":516},"24370296","typing",237,"creative",{"id":518,"name":519,"points":520,"category":511},"24397183","Tailwind.ink",209,false,"v2",{"id":524,"name":5,"line":6,"ai":521,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":525,"top":18,"kw":526,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":527,"url":9,"mix":528,"praise":81,"objection":101,"sub":21},24363493,0.05,[24,25,26,27,28],"1353330135005300000330005015500300000300",[18,32,33,34],1794036595530]